4

「Y」に一対多の関連付けを持つエンティティ「X」があります

各 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

Hibernate Criteria を使用してこれを表現するにはどうすればよいですか?

どうもありがとうピーター

4

1 に答える 1

6

Y コレクションのを作成し、aliasそのカウントを取得して、並べ替えます。次に例を示します。

// 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"));
于 2013-11-08T16:27:14.523 に答える