vec*_*ect 6 java hibernate hibernate-criteria
我试图通过另一个查询的结果缩小Hibernate Criteria查询的结果集.我知道如何用JPQL解决这个问题:
FROM DocPackage p WHERE
EXISTS (SELECT g
FROM ObjectGroup g JOIN g.items i, Person per
WHERE g=p.applicantGroup
AND i.objectClass = 'org.cp.model.common.Person'
AND i.objectId=per.id
AND lower(concat(per.firstName,' ',per.lastName)) like :applicant
)
Run Code Online (Sandbox Code Playgroud)
但我无法想象如何使用Criteria进行此类查询.有关如何使用Criteria实现此选择的任何想法?使用Hibernate 3.3.
UPD:试图解决这个问题我做了以下Criteria查询:
Criteria resultCriteriaQuery = this.hibernateSession.createCriteria(DocPackage.class, "pack");
DetachedCriteria personSubquery = DetachedCriteria.forClass(Person.class, "pers").
add(Restrictions.like("pers.loFstLstName", "%" + searchObject.getApplicant().toLowerCase() + "%")).
add(Restrictions.eqProperty("itm.objectId", "pers.id"));
DetachedCriteria applicantsSubquery = DetachedCriteria.forClass(ObjectGroup.class, "objGrp").
add(Restrictions.eqProperty("pack.applcantGroup", "objGrp")).
createAlias("objGrp.items", "itm").
add(Restrictions.eq("itm.objectClass", "org.cp.model.common.Person")).
add(Subqueries.exists(personSubquery));
resultCriteriaQuery.add(Subqueries.exists(applicantsSubquery));
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我有一个NullPointerException上resultCriteriaQuery.list().这个查询出了什么问题?有任何想法吗?
小智 0
为了更好地分析案例,它会打印根据条件自动生成的 HQL 语句,您必须将连接属性放入 hibernate:
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
Run Code Online (Sandbox Code Playgroud)
以及要调试的日志。
获得后,您可以与要生成的内容进行比较并查看差异。
问候,
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |