OneToMany
以下のエンティティなど、他のエンティティと関係を持つエンティティがありBoat
ます。実際には、エンティティには多くのフィールドがあります。
@Entity
public class Boat {
@Id
private long id;
private String name;
@OneToMany(fetch=FetchType.EAGER)
private List<Gun> guns;
public List<Gun> getGuns() {
return guns;
}
public String getName() {
return name;
}
}
一部の検索では、の基本属性のみに関心があり、関係Boat
を取得したくありませんOneToMany
。1 つのオプションは、すべてのOneToMany
関係を と作成することfetch=FetchType.LAZY
です。
ただし、遅延読み込みは 2 つの問題を引き起こします。
- 遅延読み込みは、
OneToMany
私が必要としない関係の周りにプロキシを作成します。OneToMany
リレーションシップにアクセスする必要はまったくなく、可能な限りパフォーマンスを改善する必要があります。 - 他の多くのクエリでは熱心なフェッチが必要であり、すべて
OneToMany
のManyToOne
関係を遅延フェッチに変更すると、他のクエリが面倒になります。
遅延フェッチを使用せずに、どの関係を動的に取得するかを選択する方法はありますか? これは標準のJPQLを使用して可能ですか?
GlassfishでEclipseLinkを使用しています。
私は以前にEclipseLinkフェッチグループを調査しましたが、これは私の問題に取り組んでいます。ただし、この問題に遭遇しました: https://stackoverflow.com/questions/19577864/classdescriptor-returns-null-fetchgroupmanager-when-trying-to-create-an-eclipsel