1

このようなことをする方法はありますか

select a from A a join fetch a.b 

a.bの一部のサブクラスにのみ存在する場合A

私が持っているところ

@Entity
class A {
}

@Entity
class SubA extends A {
  @OneToMany
  List<B> b;
}

a.bつまり、trueの場合にのみ、@OneToManyコレクションをフェッチして参加したいと思いa instanceof SubAます。

これは可能ですか?または、コレクションのn-plus-one選択の問題を回避するためのより良い方法はありますか?私が本当に求めているのBは、コレクション内のそれぞれに対してラウンドトリップを行わないようにすることです。フェッチ結合はそのためにうまく機能しているようです。

私はEclipseLinkを使用していますが、可能な限りJPA標準を好みます。

4

1 に答える 1

0

「より良い方法」(とにかくEclipselinkを使用)は、withに注釈を付けるか、クエリヒントを追加することにより、代わりにバッチフェッチを使用するように見え@OneToManyます@BatchFetch

于 2013-07-26T01:52:26.237 に答える