私の問題は私にはかなり簡単に思えますが、うまくいく答えが見つからないようです。デフォルトで遅延フェッチされる、別のエンティティとの ManyToMany 関連付けを持つ Hibernate エンティティがあります。ManyToMany アソシエーションが熱心にロードされたエンティティを返す基準を作成したいと考えています。
問題のエンティティは次のとおりです (無関係な部分は削除されています)。
@Entity
public class Order {
@ManyToMany
private List<Item> items;
@ManyToMany
private List<Discount> discountEntries;
...
}
これまでの私の注目すべき試みと結果は次のとおりです。
Criteria criteria = getSession().createCriteria(Order.class)
.setFetchMode("items", FetchMode.SELECT)
.setFetchMode("discountEntries", FetchMode.SELECT);
criteria.list();
- アイテムを遅延ロードします
Criteria criteria = getSession().createCriteria(Order.class)
.setFetchMode("items", FetchMode.JOIN)
.setFetchMode("discountEntries", FetchMode.JOIN);
criteria.list();
- 複数のバッグを取得できません
Criteria criteria = getSession().createCriteria(Order.class)
.createAlias("items", "items", CriteriaSpecification.INNER_JOIN)
.setFetchMode("items", FetchMode.JOIN)
.createAlias("discountEntries", "discountEntries", CriteriaSpecification.INNER_JOIN)
.setFetchMode("discountEntries", FetchMode.JOIN);
criteria.list();
- 空のリストを返します
編集:問題の一部であると思われる別の ManyToMany 関連付けを追加しました。