我无法获得具有如下字段的实体的持久性:
private Map<String, List<String>> filterValueRange;
到目前为止我已经尝试过:
@ElementCollection
@JoinTable(name="ATTRIBUTE_VALUE_RANGE", joinColumns=@JoinColumn(name="ID"))
@MapKeyColumn (name="Filter_Id")
@Column(name="FILTER")
private Map<String, List<String>> filterValueRange;
但似乎仍然缺少一些东西。
有人能指出我正确的方向吗?
我使用jpa作为界面,但是引擎盖下有Hibernate。
谢谢!
答案 0 :(得分:0)
我不相信这是可能的。您要实现的是映射元素集合的元素集合。
如果我错了,你应该使用 @CollectionTable注释定义你的连接表。
但我认为你需要定义代表值范围的Embedable并拥有自己的ElementCollection值。您可以将此embedable映射到filterValueRange并通过它访问值列表。
如果您不需要通过filterValueRange进行查询,则可以将其序列化为Blob。
答案 1 :(得分:0)
JPA不支持映射嵌套集合关系,但您可以通过稍微更改对象模型来轻松解决此问题,例如:
@OneToMany(mappedBy = "parent")
@MapKeyColumn (name="Filter_Id")
private Map<String, ValueRange> filterValueRange;
并在相应的ValueRange实体中:
@ManyToOne
private Parent parent;
或者您也可以查看以下帖子: