メモメモ。UserとGroupがmany-to-manyの関係で、Set User#getGroups()を介して指定のGroupに繋がっているUser達を取得したい場合のHQLクエリーの書き方。
select user from User as user join user.groups groups where groups.name = 'group1'
joinしないといけないのか。where句だけで簡単に取れないのかなあ。
8/13追記)同じことをCriteriaでやる方法。
Criteria crit = session.createCriteria(User.class); crit.createAlias("groups", "g"); Criterion exp = Expression.eq("g.name", "group1"); crit.add(exp); List result = crit.list();
この場合もCriterionだけでは表現できず、やっぱりCriteria#createAlias()でjoinしなきゃいかんのか。