1

私には2つの関連するエンティティがあります

@Entity
public class Book {
    @ManyToOne
    Shelf shelf;
}

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf")
    Set<Book> books;
}

空の棚(本がない)をフェッチし、新しい本を作成して棚に保持してから、その棚を再度フェッチすると、その本のコレクションは空になります。デバッグログを使用して実行すると、Hibernateが2回目にシェルフを検索せず、ブックコレクションが更新されたことを知らないセッションキャッシュからシェルフを返すだけであることがわかります。

どうすれば効果を取り除き、シェルフの更新された状態を取得できますか?

ありがとう、
Artem。

4

3 に答える 3

2

単一のセッション(トランザクション)の範囲内で手動で保守する必要があるようです。@CascadeもEAGERもセッションキャッシュに影響を与えません

于 2009-08-24T13:52:34.207 に答える
1

棚に設定されている本のフェッチタイプEAGERを設定してみてください。

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
    Set<Book> books;
}
于 2009-05-27T15:53:41.390 に答える
1

@Cascadeはあなたが探しているものですか?

于 2009-06-12T05:35:16.840 に答える