私はよく似た質問をいくつか見てきました。JPAは、FetchType.LAZY子コレクションを読み込むことを熱望しています
これは非常に簡単です。私はJava JPAを使用しています。子エンティティのリストをロードする場合がありますが、すべてではありません。残念なことに、JPAは私が遅れてそれを取ってくると言うと、私の言うことを聞いていないようです。 childEntities属性が何らかの方法でアクセスされている場所にコードがどこにもないことを100%確信しています。しかし、JPA.em()。find(..)呼び出しの直後に、すべての子エンティティがロードされています。これがアノテーションとの関係を宣言する方法です。
@Entity
@Table(name = "parentEntities")
public class ParentEntity implements Serializable {
....
@OneToMany(mappedBy = "entityPropertyName", fetch = FetchType.LAZY)
public List<ChildEntity> childEntities;
...
}
そして、これは私が親エンティティをロードする方法である:
ParentEntity parentEntity = JPA.em().find(ParentEntity.class, id);
また、私は時々熱心このコレクションをフェッチし、動的時にそうするようにJPAを伝えることができるように期待していました。しかしそれはステップ2です。ステップ1は、この作業の権利を取得することです。
は、どのようにそれをフェッチすることを確認していますか? orm.xmlや他の場所のマッピングやエンティティ・リスナーが設定されて、遅延設定をオーバーライドするか、コレクションをトリガーすることができますか?あなたはどのプロバイダを使用していますか? – Chris
デバッガでは、find呼び出しの直後にリストが作成されているのがわかります。私は構成にXMLを使用せず、アノテーションのみを使用しています。 –
今のところ、私は非常に肥大した、ハッキーなソリューションを作りました。私は2つの親エンティティを作成しました.1つは子リストコレクションと1つありません。残念なことに、このハッキング(多くのハックがそうであるように)は、コードの残りの部分にカスケードします。 –