我对 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/