0

コード

クラス リスト{
@OneToMany(targetEntity=ShoppingItemStatus.class, cascade=CascadeType.ALL,fetch = FetchType.LAZY)
プライベート リスト項目 = new ArrayList();

}

こんにちは、

私は Eclipse Link と Glassfish を使用していますが、非常に厄介なエラーが発生しました。

  1. オブジェクトを永続化しています
  2. オブジェクトのリストを読み込んでいます (新しいオブジェクトが含まれています)
  3. 新しいオブジェクトの「アイテム」にはアイテムが含まれていません

次に、サーバーを再起動します。

すべてのアイテムが正しく含まれています。ステップ 2 では、ShoppingItemStatus と list の間のテーブルのデータが存在するため、このエラーをよく理解できません。

エンティティのすべての構成と注釈を変更して、2 日間検索しています。

迷っています よろしくお願いします!

4

1 に答える 1

0

私の推測では、関係の両側を更新していないときです。OneToManyを追加することはないため、再読み込みすると空になります。あなたは関係の両側を維持する必要があります。

http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption.2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_sideを参照してください 。

デフォルトでは、EclipseLinkは共有キャッシュを有効にします。オブジェクトを再読み込みすると、そのオブジェクトはキャッシュから取得され、永続化した状態のままになります。

この問題は、共有キャッシュがなくても、単一のエンティティマネージャー/トランザクションでも発生します。

この問題を回避するために、いつでも共有キャッシュを無効にすることができますが、それでもコードを修正する必要があります。

于 2012-05-10T14:11:12.287 に答える