Hibernate标准按一对多关联计数排序

opu*_*111 3 java sql hibernate hibernate-criteria

我有一个实体"X"与"Y"的一对多关联

每个X都有一个唯一的xid,每个Y都有一个xid和一个唯一的yid

我想写一个标准,生成一个按照相关Y的数量排序的X列表

这是等效的SQL

SELECT * 
FROM X JOIN Y ON X.xid = Y.xid
GROUP BY X.xid
ORDER BY COUNT(Y.yid) DESC
Run Code Online (Sandbox Code Playgroud)

我如何使用Hibernate Criteria表达这一点?

非常感谢彼得

roa*_*ark 5

您将要alias为Y集合创建一个,获取它的计数,并按它排序.这是一个例子:

// Create the criteria assuming session is open
Criteria criteria = session.createCriteria(X.class, "x");

// Give the Y association an alias
criteria.createAlias("x.yCollectionName", "yCollectionAlias"); 

// Get the count of IDs in the joined collection
criteria.setProjection(Projections.projectionList().add(Projections.groupProperty("yCollectionAlias.id"))
.add(Projections.count("yCollectionAlias.id").as("yCollectionAliasCount")));

// Sort the criteria associated by Ys
criteria.addOrder(Order.desc("yCollectionAliasCount"));
Run Code Online (Sandbox Code Playgroud)

  • 实际上,这不适合我.当我尝试上面的代码时,我获得了一个包含元素yCollectionAlias.id和yCollectionAliasCount的Object数组列表,而不是获取X实体列表.我只想要一个按yCollectionAliasCount排序的X列表.我怎么做? (2认同)