我正在编写一个标准,应该按相关实体的属性对结果进行分组。我尝试过使用别名,尝试使用属性路径本身,但到目前为止我什么都没得到。 说我的课程是(草图):
class A{
@ManyToOne(...)
B b;
}
class B{
@OneToOne(...)
C c;
}
class C{
String s;
}
我想要一个标准,它返回C中每个唯一字符串s的A和B的数量。
我最初的尝试是:
session.createCriteria(A.class)
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("b.c.s"), "string")
.add(Projections.countDistinct("b"), "b's")
.add(Projections.rowCount(), "a's"))
这没有多大帮助,因为b.c.s不是A的属性。
然后我试了
session.createCriteria(A.class)
.createAlias("b.c", "al")
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("al.s"), "string")
.add(Projections.countDistinct("b"), "b's")
.add(Projections.rowCount(), "a's"))
这实际上被翻译成了SQL,但没有达到目的,因为它没有在查询中包含任何连接。
我似乎在做错事。是否可以使用条件API获得此类有效查询?
答案 0 :(得分:0)
可能是这样的:
sess.createCriteria(A.class)
.createCriteria("b")
.createCriteria("c")
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("s"), "string")
.list()
.size()
我认为你必须看看双createCriteria()