Criteria API で inner join する

Criteria API で inner join する

2007/03/20 8:36am

毎回、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 文法で書く気が失せるな。