0

私はhibernateの遅延読み込みメカニズムを回避しようとしていますが、Eager FetchTypeを使用してこのリストオブジェクトを作成しました。これにより、次のようになります。

@JsonIgnore
@CollectionTable(name = "nav", joinColumns = @JoinColumn(name="conn"))
@ElementCollection(fetch = FetchType.EAGER)
@IndexColumn(name="filter") private List<String> filters = Lists.newArrayList();

しかし、私はまだjava.util.Listの代わりにPersistentListを読んでいます。何が間違っているのかについて何か考えはありますか?

xml構成を使用していません。

4

2 に答える 2

0

永続リストは、Hibernateがデータベースからデータを正しく保存および取得するために使用する非遅延コレクションです。永続化可能なエンティティを定義するときに、ArrayListやLinkedListなどのJavaコレクションの実装を使用できず、インターフェイスのみを使用できる場合はありません。実際、あなたはリストを要求していて、インターフェースのコントラクトを完全に尊重するPersistentListを取得しています。

熱意を取り除き、クラスをデバッグすると、遅延コレクションが表示されます。これは通常、CGLIBプロキシです。

于 2012-07-10T12:31:30.773 に答える
-1

遅延読み込みを回避するには、設定するlazy = true代わりに設定FetchType.EAGERする必要がありFetchType.JOINます。

アノテーションベースのマッピングについては、以下のリンクを参照してください:[http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-singleassoc-fetching]

それがあなたを助けるかどうか私に知らせてください。

于 2012-07-10T12:31:07.513 に答える