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