在 JPA 中映射一个复杂的 Map
Mapping a complex Map in JPA
我只是无法获得具有如下字段的实体的持久性:
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。
谢谢!
我不认为这是可能的。您要实现的是映射元素集合的元素集合。
如果我错了,你应该使用
@CollectionTable 注释来定义你的可连接对象。
但我认为您需要定义表示值范围并具有自己的值的 ElementCollection 的 Embedable。比您可以将此可嵌入对象映射到您的 filterValueRange 并通过它访问值列表。
如果您不需要通过 filterValueRange 进行查询,您可以将其简单地序列化为 Blob。
JPA 不支持映射嵌套集合关系,但是您可以通过稍微更改对象模型轻松克服这个问题,例如:
@OneToMany(mappedBy = "parent")
@MapKeyColumn (name="Filter_Id")
private Map<String, ValueRange> filterValueRange;
并在相应的 ValueRange 实体中:
@ManyToOne
private Parent parent;
或者你也可以看看下面的post:
- JPA Map<String,String[]> mapping
我只是无法获得具有如下字段的实体的持久性:
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。
谢谢!
我不认为这是可能的。您要实现的是映射元素集合的元素集合。
如果我错了,你应该使用 @CollectionTable 注释来定义你的可连接对象。
但我认为您需要定义表示值范围并具有自己的值的 ElementCollection 的 Embedable。比您可以将此可嵌入对象映射到您的 filterValueRange 并通过它访问值列表。
如果您不需要通过 filterValueRange 进行查询,您可以将其简单地序列化为 Blob。
JPA 不支持映射嵌套集合关系,但是您可以通过稍微更改对象模型轻松克服这个问题,例如:
@OneToMany(mappedBy = "parent")
@MapKeyColumn (name="Filter_Id")
private Map<String, ValueRange> filterValueRange;
并在相应的 ValueRange 实体中:
@ManyToOne
private Parent parent;
或者你也可以看看下面的post:
- JPA Map<String,String[]> mapping