Note that there are some explanatory texts on larger screens.

plurals
  1. PO"where exists" in Hibernate HQL
    primarykey
    data
    text
    <p>How can I write a "not exists" query in HQL? I am trying to get an HQL not exists query which returns the same results as this Oracle SQL query:</p> <pre><code>select * from SCHOOL a where not exists (select 1 from STUDENT b where B.SCHOOL_ID=a.id and B.STATUS_ID not in (0,1,2,3,4)) </code></pre> <p>My mapping files are below:</p> <p> </p> <pre><code> &lt;!-- primary key ommitted --&gt; &lt;set name="students" cascade="all" fetch="select" lazy="false" &gt; &lt;key column="SCHOOL_ID" /&gt; &lt;one-to-many class="com.companyname.Student" /&gt; &lt;/set&gt; &lt;/class&gt; </code></pre> <p> </p> <pre><code> &lt;!-- primary key ommitted --&gt; &lt;many-to-one name="school" column="SCHOOL_ID" class="com.companyname.School" fetch="join" lazy="false"/&gt; &lt;many-to-one name="status" class="com.companyname.Status" column="STATUS_ID" /&gt; &lt;/class&gt; </code></pre> <p> </p> <p>I tried the following tag in my School.hbm.xml file</p> <pre><code>&lt;query name="myQuery"&gt; &lt;![CDATA[ from School s where not exists from Student st where st.school_id=s.id and st.status.id not in (0,1,2,3,4) ]]&gt; &lt;/query&gt; </code></pre> <p>and I got this stack trace</p> <pre><code>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException Caused by: java.lang.NullPointerException at org.hibernate.hql.ast.HqlParser.negateNode(HqlParser.java:117) at org.hibernate.hql.antlr.HqlBaseParser.negatedExpression(HqlBaseParser.java:2378) at org.hibernate.hql.antlr.HqlBaseParser.logicalAndExpression(HqlBaseParser.java:2331) at org.hibernate.hql.antlr.HqlBaseParser.logicalOrExpression(HqlBaseParser.java:2296) at org.hibernate.hql.antlr.HqlBaseParser.expression(HqlBaseParser.java:2082) at org.hibernate.hql.antlr.HqlBaseParser.logicalExpression(HqlBaseParser.java:1858) at org.hibernate.hql.antlr.HqlBaseParser.whereClause(HqlBaseParser.java:454) at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:708) at org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296) at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159) at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:248) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111) at org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:77) at org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:56) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72) at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:402) at org.hibernate.impl.SessionFactoryImpl.&lt;init&gt;(SessionFactoryImpl.java:352) </code></pre> <p>Can somebody let me know what I'm doing wrong?</p> <p>Thank you!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload