23

Criteria API を使用して、2 つのテーブル間で LEFT OUTER JOIN を実行したいと考えています。Hibernate のドキュメントで見つけたのは、次のメソッドだけです。

Criteria criteria = this.crudService
            .initializeCriteria(Applicant.class)
            .setFetchMode("products", FetchMode.JOIN)
            .createAlias("products", "product");

ただし、これは、返される結果の数のために、内部結合または右外部結合のいずれかを実行します。

また、参加をレイジーにしたいです。これどうやってするの?

乾杯!

更新:エイリアスを使用すると、結合が自動的に INNER JOIN になるようです。その「裏話」にはまだ把握できていないものがあります。だから、今日はエイリアスはありません。これにより、2 つのテーブルに制限を適用するという問題が残ります。どちらにも列 (より適切な場合はプロパティ) ' name ' があるためです。

4

3 に答える 3

38

products テーブルで左結合する必要がある場合は、次のようにします。

.....createAlias("商品", "商品", Criteria.LEFT_JOIN);

于 2010-02-06T04:49:08.880 に答える
0

結合は SQL 要求にあります。それは怠け者ではありません。


Hibernate でこのデータを遅延取得するには、HQL リクエストから除外するだけです。次に、エンティティのゲッターにアクセスすると (セッションがまだ開いている場合)、自動的に読み込まれます (リクエストのその部分を記述する必要はありません)。

于 2010-02-05T11:22:27.627 に答える