编程语言
首页 > 编程语言> > java-带有条件的休眠条件

java-带有条件的休眠条件

作者:互联网

我需要相当于

SELECT m.id, count(i.id)
FROM master m LEFT JOIN item i on m.id = i.master_id
GROUP BY m.id, m.size
HAVING m.size <> count(i.id);

在休眠标准中.多亏了this question,我知道如何将分组结果作为Object []的列表获取:

ProjectionList projList = Projections.projectionList();
projList.add(Projections.groupProperty("master"));
projList.add(Projections.count("id"));

session
.createCriteria(Item.class)
.join("master")
.setProjection(projList)
.addRestriction(???) // <- my HAVING clause
.list();

我不知道如何添加HAVING子句.我猜想,它类似于Restrictions.eqProperty,但是如何引用计数呢?

有没有一种方法可以在查询中引用结果元组元素?

解决方法:

Hibernate Criteria API不支持HAVING子句.由于无论如何在较新的Hibernate版本中都已弃用,建议您使用JPA Criteria API,或使用HQL / JPQL或更高级的包装器(如Querydsl JPA).

标签:hibernate,hibernate-criteria,java
来源: https://codeday.me/bug/20191025/1931711.html