Criteria API で inner join する
毎回、Hibernate の使い方を Google で検索する羽目になるのだが、今日はその検索の過程で、偶々こんな記事を見つけた。
Hibernate Querying 102 : The Criteria API
Hibernate の Criteria API について網羅的に解説した記事。
実は、inner join
も Criteria API で記述できることを知って驚いた。
いままで、
from Foo as foo
inner join fetch foo.bar
where foo.a = :a and
foo.b between :x and :y
order by foo.b desc
こんなふうに HQL で書いていた inner join
も、
getSession()
.createCriteria(Foo.class)
.add(Expression.eq("a", a))
.add(Expression.between("b", x, y))
.addOrder(Order.desc("b"))
.createCriteria("bar")
.list();
Criteria API で書ける。
Criteria の便利さと保守のしやすさを知るたびに、独自 SQL 文法で書く気が失せるな。