1

我有两个相关的实体,比如说

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

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

如果我取一个空书架(没有书),创建一本新书并将其持久保存到书架上,然后再次获取该书架,它的藏书是空的。当我使用调试日志运行它时,我看到 Hibernate 没有第二次搜索书架,它只是从会话缓存中返回它,它不知道它的书籍集合已更新。

我怎样才能摆脱效果并获得货架的更新状态?

谢谢,
阿尔特姆。

4

3 回答 3

2

似乎您必须在单个会话(事务)的范围内手动维护它。@Cascade 和 EAGER 都不会影响会话缓存

于 2009-08-24T13:52:34.207 回答
1

尝试为 Shelf 中的书籍设置获取类型 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 回答