0

Spring Data リポジトリを使用していくつかのメソッドを自動生成するプロジェクトがあります。そのようなメソッドの 1 つは、いくつかのパラメーターを受け取り、書籍のリストを返すものです。リポジトリでは、そのメソッドは次のようになります。

List<Book> findBySellerFlagTrueAndPublishedState(PublishedState state);

ただし、そのメソッドを使用すると、Hibernate は FetchType.EAGER として注釈が付けられた本のプロパティを遅延読み込みしているようです。また、JPA の Criteriabuilder を使用して自分でクエリを作成すると、同じ問題が発生します。デフォルトのfindOne(Long id)方法を使用すると、これらのプロパティが熱心に読み込まれます。

私はJPA 2.0を使用しており、実装としてHibernateを使用しています。

この問題を抱えている関係の1つに関する私の注釈は次のとおりです。

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name="BOOK_THEME", 
joinColumns=@JoinColumn(name="BOOK_ID", referencedColumnName="BOOK_ID"),
inverseJoinColumns=@JoinColumn(name="THEME_ID", referencedColumnName="THEME_ID"))
@OrderColumn(name="THEME_SEQUENCE")
private List<Theme> themes;

getter と setter は単なる標準であり、一方向の関係です ( には本はありませんTheme)。

注釈の設定方法に問題があるに違いないと思います。誰かが私が間違っていることを知っていますか?

4

1 に答える 1