在hibernate中,SQL允许写在配置文件里,下面两个例子分别为HQL和SQL,从多个对象或表中取得一个对象:
HQL:
<query name="PermissionType.findAllProfilePermissionType">
<query-param name="permissionTypeCodes" type="string"/>
select pt
from PermissionType pt, ProfilePermissionType ppt
where pt.code = ppt.permissionTypeCode
and (:permissionTypeCodes is null
or pt.code not in (:permissionTypeCodes))
</query>
SQL:
<sql-query name="AgentRef.getAgentRefByAgentID" cacheable="true"
cache-region="/au/com/at2/objects/agentref/AgentRefIdByAgentId">
<query-param name="agentId" type="integer"/>
<return alias="AR2" class="au.com.at2.objects.agentref.AgentRef"/>
SELECT {AR2.*}
FROM AGENT_REF AR1, AGENT_REF AR2
WHERE AR1.AgencyID = AR2.AgencyID
AND AR1.AgentID = :agentId
AND AR2.AgentID IS NULL
AND AR2.DepartmentID IS NULL
</sql-query>