我有一个实体,其中包含几个类型为Set的字段。当我从数据库中检索实体时,即使数据库中的关联正确,该集也始终为空。
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER)
private Set<Location> locations;
我尝试启用急切提取以强制hibernate在重新启动实体时加载关联,但它始终为空。具有非集合类型的其他字段已正确填充。
我以前从未见过这种hibernate,我做错了吗?
由于
答案 0 :(得分:2)
不是100%但99%确定您需要将cascade
添加到@OneToMany
- 默认级联根本不是级联,这意味着如果您保留实体,{{1} }收集将不会被保留..
试试这个:
Location
换句话说,你的问题不是没有被提取的集合,而是它首先没有被持久存在(你在Location和join表中看到了什么吗?)
编辑 - 我现在看到您编写的关联是正确的,那么您是否单独保留了Location对象?
答案 1 :(得分:0)
我认为你错过了mappedBy属性。
@OneToMany(fetch = FetchType.EAGER, mappedBy="fieldname")
其中fieldname应为Location实体
中引用字段的名称