2017-04-05 98 views
0

我有一个类型为Set的几个字段的实体。当我从数据库中检索实体时,即使数据库中的关联正确,该集合也始终为空。持久集是空的休眠

@Valid 
@NotNull 
@OneToMany(fetch = FetchType.EAGER) 
private Set<Location> locations; 

我已经尝试启用渴望提取强制hibernate加载它的实体,但它总是空的时候的关联。非集合类型的其他字段正确填充。

我从来没有见过这个与hibernate之前,我做错了什么?

感谢

回答

1

不是100%,但99%的把握认为你需要添加cascade@OneToMany - 默认级联没有级联可言,也就是说如果你坚持你的实体,该Location收集不会持久..

试试这个:

@Valid 
@NotNull 
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
private Set<Location> locations; 

换句话说,你的问题是不是没有被提取的集合,但它没有被摆在首位坚持(你有没有看到anythi ng的位置和连接表?)

编辑 - 我现在看到你写的关联是正确的,所以你坚持你的位置对象分开?

0

我想你错过了mappedBy属性。

@OneToMany(fetch = FetchType.EAGER, mappedBy="fieldname") 

如果字段名应该是引用字段的位置实体名称