hibernate - 在 JPA 中,可嵌入值的映射,具有用作键的嵌入实体

标签 hibernate jpa

我对 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,并且一次作为值(value)的一部分。

是否有一种类似于 @MapKey 注释的方法来指示键是值的列之一(即嵌入)?

最佳答案

我认为您要求的是:

@MapKeyJoinColumn("RESOURCE_TYPE_ID")

在 ElementCollection 上。

然后还指定可嵌入资源类型的 FK 映射的列名称。

关于hibernate - 在 JPA 中,可嵌入值的映射,具有用作键的嵌入实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754480/

相关文章:

JAVA::copy List object1 到 list object2,其中两个对象具有相同的变量

java - Hibernate 加入保存级联

jakarta-ee - EntityManager 只能在事务中使用吗?

java - 为什么 hibernate 在添加元素以设置多对多映射时从连接表中删除行?

java - HQL 字符串左侧

java - 如何从受限数据列表中获取结果?

java - 一对一和连接表

java - 如何返回 JPA 中最大 Collection 的大小?

hibernate - 从 persistence.xml 引用 Maven 依赖项 jar 的artifactId

java - JPA 相当于减法