繁体   English   中英

在JPA中映射复杂的地图

[英]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;

另外,您也可以看看以下帖子:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM