在 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