EntityQuery NPE
ben_utzer Aug 6, 2009 10:35 AMHi,
The problems I'm facing are that the order-property of my EntityQuery-subclass is ignored and that I get a NPE at org.hibernate.hql.ast.ParameterTranslationsImpl.getNamedParameterExpectedType(ParameterTranslationsImpl.java:63) for my second restriction (please see below).
The generated HQL is:
select person from Person person left join person.gruppen gruppe where lower(person.personentyp.gruppentyp.bezeichnung) = (:el1)) and :el2 in (gruppe.kennung) order by person.id desc
So everything looks fine to me.
My EntityQuery is defined as follows in components.xml:
<framework:entity-query name="mitarbeiterQuery" class="MitarbeiterQuery" max-results="20" scope="conversation"> <property name="ejbql">select person from Person person left join person.gruppen gruppe</property> <property name="entityClass">Person</property> <framework:order>person.id desc</framework:order> <framework:restrictions> <value>lower(person.personentyp.gruppentyp.bezeichnung) = (#{'mitarbeiter'}))</value> <value>#{mitarbeiterQuery.gruppe.kennung} in (gruppe.kennung) </value> </framework:restrictions> </framework:entity-query>
MitarbeiterQuery.java:
public class MitarbeiterQuery extends CustomEntityQuery<Person> implements Serializable { @In private EntityManager entityManager; private Gruppe gruppe; public Gruppe getGruppe() { return gruppe; } public void setGruppe(Gruppe gruppe) { this.gruppe = gruppe; } @Override public void clear() { super.clear(); this.gruppe = new Gruppe(); ... } public List<Integer> getJahrgaenge() { return jahrgaenge; } public void setJahrgaenge(List<Integer> jahrgaenge) { this.jahrgaenge = jahrgaenge; } @Factory(value = "jahrgaenge") public void loadJahrgaenge() { this.jahrgaenge = entityManager.createNamedQuery("jahrgaenge") .getResultList(); } ... }
I would appreciate any help on how to get this working.
Thanks in advancee,
Ben