Criteria APIを使用して、2つのテーブル間でLEFT OUTER JOINを実行したい。 Hibernateドキュメントで見つけることができるのは、このメソッドだけです。
Criteria criteria = this.crudService
.initializeCriteria(Applicant.class)
.setFetchMode("products", FetchMode.JOIN)
.createAlias("products", "product");
ただし、返される結果の数が多いため、これは内部結合または右外部結合を実行します。
私はまた、私が怠惰であることを望んでいます。これどうやってするの?
乾杯!
PDATE:エイリアスを使用すると、INNER JOINが自動的に作成されるようです。まだ把握していない「裏話」に何かあります。したがって、今日はエイリアスはありません。 2つのテーブルには両方とも列(または適切な場合はプロパティ)があるため、2つのテーブルに制限を適用するという問題が残ります 'name '。
製品テーブルに左結合する必要がある場合は、次のようにします。
..... createAlias( "products"、 "product"、Criteria.LEFT_JOIN);
Sdavids回答のAPIはdeprecated
になりました。その更新バージョンは
.... createAlias( "employee"、 "emp"、JoinType.LEFT_OUTER_JOIN)
結合はSQL要求にあります。怠惰になることはできません。
Hibernateでは、このデータを遅延して取得するには、HQLリクエストからデータを除外するだけです。次に、エンティティのゲッターにアクセスすると(セッションがまだ開いている場合)、自動的に読み込まれます(リクエストのその部分を記述する必要はありません)。