2009-05-26 37 views
1

我有两个相关的实体,说如何在Hibernate中更新与mappedBy的集合类型关系?

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

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

如果我取一个空架(无书),建立并坚持一本新书的书架,然后再获取该架子,其藏书是空的。当我使用调试日志记录运行它时,我发现Hibernate不会再次搜索这个架子,它只是从会话缓存中返回,它不知道它是否已经更新了书籍集合。

我该如何摆脱效果并获得更新的货架状态?

谢谢,
Artem。

+0

问题解决了吗? – Schildmeijer 2009-06-14 08:37:38

回答

2

好像你必须在单个会话(事务)的范围内手工维护它。 @Cascade和EAGER都不影响会话缓存

1

尝试设置提取类型渴望书籍货架设置:

@Entity 
public class Shelf { 
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER) 
    Set<Book> books; 
} 
+0

我不希望它渴望。这会打击性能很差 – artemb 2009-07-22 11:35:24

1

是@Cascade你在找什么?

+1

听起来像是这样,但我无法得到它的工作。我应该使用哪种CascadeType? – artemb 2009-07-22 12:02:34

相关问题