gpt4 book ai didi

java - 通过子查询缩小查询结果

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:01 24 4
gpt4 key购买 nike

我试图通过另一个查询的结果来缩小 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
)

但我无法想象如何使用 Criteria 进行这样的查询。任何想法如何使用 Criteria 实现此选择?使用 Hibernate 3.3。

UPD:为了解决这个问题,我提出了以下条件查询:

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));

但它不起作用。我在 resultCriteriaQuery.list() 上有一个 NullPointerException。这个查询有什么问题?有什么想法吗?

最佳答案

为了更好地分析案例,它打印了根据条件自动生成的 HQL 语句,您必须将连接属性放入 hibernate:

<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />

以及要调试的日志。

一旦有了它,您就可以将其与您要生成的进行比较并查看差异。

问候,

关于java - 通过子查询缩小查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com