3

argsのメソッドfetch()のタイプは、SingularAttribute、PluralAttributeにすることができますが、ListAttributeにすることはできませんか?

次に、critria apiを使用してコレクションをフェッチする方法は?ありがとうございました。

4

2 に答える 2

3

もちろん、ラスムス・フランケが言ったように、それは可能です。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);
于 2011-10-01T07:49:28.230 に答える
2

ListAttributeは、コレクションに基づく他の属性と同様に、PluralAttributeを拡張します。実際にroot.fetch(ListAttribute)を使用しようとしましたか?

于 2011-03-04T14:49:38.447 に答える