如何在HQL中编写"不存在"查询?我试图获得一个HQL不存在的查询,它返回与此Oracle SQL查询相同的结果:
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))
Run Code Online (Sandbox Code Playgroud)
我的映射文件如下:
<!-- primary key ommitted -->
<set name="students"
cascade="all" fetch="select" lazy="false" >
<key column="SCHOOL_ID" />
<one-to-many class="com.companyname.Student" />
</set>
</class>
Run Code Online (Sandbox Code Playgroud)
<!-- primary key ommitted -->
<many-to-one name="school"
column="SCHOOL_ID"
class="com.companyname.School" fetch="join" lazy="false"/>
<many-to-one name="status"
class="com.companyname.Status" column="STATUS_ID" />
</class>
Run Code Online (Sandbox Code Playgroud)
我在School.hbm.xml文件中尝试了以下标记
<query name="myQuery">
<![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)
]]> …Run Code Online (Sandbox Code Playgroud)