メモメモ。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しなきゃいかんのか。