4

次のクエリを Hibernate Criteria API でマップできるかどうか自問しています

SELECT * FROM table_a as a LEFT OUTER JOIN table_b as b ON a.primary_key = b.foreign_key and b.any_column = 'my_value'

and b.any_column = 'my_value'わかりました、私にとって難しいこと以外はすべてです。FetchMode.JOIN または addCriteria(...,...) を使用します。

しかし、 and b.any_column = 'my_value'頭痛がします。

私は埋め込みを試みました:

addCriteria("b", Criteria.LEFT_JOIN).add(Restriction.eq("b.any_column", my_value))

しかし、これは生産しています:

SELECT * FROM table_a as a LEFT OUTER JOIN table_b as b ON a.primary_key = b.foreign_key WHERE b.any_column = 'my_value'

これは私の目的ではなく、もちろん、予想されるクエリとは異なる結果を生成しています。目的のクエリにマップするように Hibernate に指示する方法を誰かに教えてもらえますか?

ありがとう、マイケル

4

1 に答える 1

6

おそらく、createAlias または createCriteria メソッドを使用する必要があります。

public Criteria createAlias(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;

public Criteria createCriteria(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;

役立つフォーラム ディスカッションがあります: https://hibernate.onjira.com/browse/HHH-2308

例えば:

Criteria criteria = getSession().createCriteria(Table_a.class);
criteria.addAlias("Table_b","joined_alias",CriteriaSpecification.LEFT_JOIN);
criteria.list();
于 2012-08-22T19:12:18.527 に答える