私たちが開発する一連のWebサービスで作業しています。HibernateはEAGERに設定されたオブジェクトのプロキシを返します
サービスの1つは、JPAマッピングを使用して一部のテーブルから情報を取得します。 Hibernateはオブジェクトを返し、期待どおりに動作します。
他のサービスは非常によく似たオブジェクトを取得し、読み取り対象ではなくプロキシを返します。フェッチはEAGERに設定されているので、なぜこれが起こっているのか分かりません。プロキシを実際のデータに変換するいくつかの方法を試しましたが(私はEAGERに設定されているので、これは不必要であると理解していますが)、プロキシは変換されません。
重要な場合に備えて、私たちは休止状態3.5.4 - finalで作業しています。
私は本当にどこから始めるべきか分かりません。我々は呼んでデータ取得するに
@Entity
public class Foo1
{
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL)
private List<Foo2> list = new ArrayList<Foo2>();
}
@Entity
public class Foo2
{
@ManyToOne(fetch = FetchType.EAGER)
private Foo3 obj;
}
:
entityManager.find(Foo1.class, id);
一つは、私が思っていたかもしれない、Hibernateは管理内部例外をしていると私は代わりに、実際のオブジェクトのプロキシを取得理由があるということですか?
EDIT これは問題に関連する休止状態の設定です:
<property name="hibernate.max_fetch_depth" value="0"/>
<property name="hibernate.default_batch_fetch_size" value="16"/>
<property name="hibernate.jdbc.batch_size" value="16"/>
エンティティクラスを投稿して、エンティティを取得する方法を教えてください。 –
@MadhusudanaReddySunnapu:済ませて、申し訳ありません。私は最初にそれを追加しておくべきだった。 –
'Foo2'と' Foo3'の両方がEAGERとしてマークされています。私は 'List list'のプロキシを見ていると思います。 'show_sql'を有効にして、EAGER関係を取得するためにクエリが実行されているかどうかを確認できますか? –