argsのメソッドfetch()のタイプは、SingularAttribute、PluralAttributeにすることができますが、ListAttributeにすることはできませんか?
次に、critria apiを使用してコレクションをフェッチする方法は?ありがとうございました。
argsのメソッドfetch()のタイプは、SingularAttribute、PluralAttributeにすることができますが、ListAttributeにすることはできませんか?
次に、critria apiを使用してコレクションをフェッチする方法は?ありがとうございました。
もちろん、ラスムス・フランケが言ったように、それは可能です。FetchParent の javadoc を確認するか、これを 試してください。
@Entity
public class SomeEntity {
@Id int id;
@OneToMany List<OtherEntity> others;
}
@Entity
public class OtherEntity {
@Id int id;
}
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<SomeEntity> cq = cb.createQuery(SomeEntity.class);
Root<SomeEntity> root = cq.from(SomeEntity.class);
ListAttribute<? super SomeEntity, OtherEntity> listAttribute = root.getModel().getList("others", OtherEntity.class);
root.fetch(listAttribute, JoinType.LEFT);
cq.select(root);
ListAttributeは、コレクションに基づく他の属性と同様に、PluralAttributeを拡張します。実際にroot.fetch(ListAttribute)を使用しようとしましたか?