使用Hibernate时,持久集为空

时间:2017-04-05 20:30:20

标签: java hibernate jpa

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

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

我尝试启用急切提取以强制hibernate在重新启动实体时加载关联,但它始终为空。具有非集合类型的其他字段已正确填充。

我以前从未见过这种hibernate,我做错了吗?

由于

2 个答案:

答案 0 :(得分:2)

不是100%但99%确定您需要将cascade添加到@OneToMany - 默认级联根本不是级联,这意味着如果您保留实体,{{1} }收集将不会被保留..

试试这个:

Location

换句话说,你的问题不是没有被提取的集合,而是它首先没有被持久存在(你在Location和join表中看到了什么吗?)

编辑 - 我现在看到您编写的关联是正确的,那么您是否单独保留了Location对象?

答案 1 :(得分:0)

我认为你错过了mappedBy属性。

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

其中fieldname应为Location实体

中引用字段的名称