我有一个类型为Set的几个字段的实体。当我从数据库中检索实体时,即使数据库中的关联正确,该集合也始终为空。持久集是空的休眠
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER)
private Set<Location> locations;
我已经尝试启用渴望提取强制hibernate加载它的实体,但它总是空的时候的关联。非集合类型的其他字段正确填充。
我从来没有见过这个与hibernate之前,我做错了什么?
感谢
我有一个类型为Set的几个字段的实体。当我从数据库中检索实体时,即使数据库中的关联正确,该集合也始终为空。持久集是空的休眠
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER)
private Set<Location> locations;
我已经尝试启用渴望提取强制hibernate加载它的实体,但它总是空的时候的关联。非集合类型的其他字段正确填充。
我从来没有见过这个与hibernate之前,我做错了什么?
感谢
不是100%,但99%的把握认为你需要添加cascade
您@OneToMany
- 默认级联没有级联可言,也就是说如果你坚持你的实体,该Location
收集不会持久..
试试这个:
@Valid
@NotNull
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Location> locations;
换句话说,你的问题是不是没有被提取的集合,但它没有被摆在首位坚持(你有没有看到anythi ng的位置和连接表?)
编辑 - 我现在看到你写的关联是正确的,所以你坚持你的位置对象分开?
我想你错过了mappedBy属性。
@OneToMany(fetch = FetchType.EAGER, mappedBy="fieldname")
如果字段名应该是引用字段的位置实体名称