【问题标题】:In JPA, a Map of embeddable values, that have an embedded entity used as the key在 JPA 中,可嵌入值的 Map,具有用作键的嵌入实体
【发布时间】:2010-05-02 18:29:09
【问题描述】:

我还是 JPA 的新手(以及我用作提供程序的 Hibernate),所以也许这无法完成,但无论如何......

考虑以下代码:

@Entity
class Root {
    @Id
    private long id;
    private String name;

    @ElementCollection
    private Map<ResourceType, Resource> resources;
    ...
}

@Entity
class ResourceType {
    @Id
    private long id;

    private String name;
}

@Embeddable
class Resource {
    private ResourceType resourceType;
    private long value;
}

在数据库中,有一个集合表'Root_resources',它存储了map的值,但是资源类型出现了两次(实际上是资源类型ID),一次作为map的KEY,并且一次作为值的一部分。

有没有一种方法,类似于@MapKey 注释,表明键是值的列之一(即嵌入)?

【问题讨论】:

标签: hibernate jpa


【解决方案1】:

我认为您要求的是:

@MapKeyJoinColumn("RESOURCE_TYPE_ID")

在 ElementCollection 上。

然后还为您的可嵌入对象上的资源类型的 FK 映射指定列名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2017-09-17
    相关资源
    最近更新 更多