Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在JPA语言中,一种可嵌入值的映射,其中有一个作为键的嵌入实体_Hibernate_Jpa - Fatal编程技术网

Hibernate 在JPA语言中,一种可嵌入值的映射,其中有一个作为键的嵌入实体

Hibernate 在JPA语言中,一种可嵌入值的映射,其中有一个作为键的嵌入实体,hibernate,jpa,Hibernate,Jpa,我对JPA(还有Hibernate,我正在使用它作为我的提供者)还是一个新手,所以也许这不能做到,但无论如何 考虑以下代码: @Entity class Root { @Id private long id; private String name; @ElementCollection private Map<ResourceType, Resource> resources; ... } @Entity class Resour

我对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;
}
@实体
类根{
@身份证
私人长id;
私有字符串名称;
@元素集合
私人地图资源;
...
}
@实体
类资源类型{
@身份证
私人长id;
私有字符串名称;
}
@可嵌入
类资源{
私有资源类型资源类型;
私人长期价值;
}
在数据库中,有一个集合表“Root_resources”,它存储映射的值,但资源类型显示两次(实际上,资源类型ID显示),一次作为映射的键,一次作为值的一部分


有没有一种方法,类似于,比如说,
@MapKey
注释,来指示键是值的一列(即嵌入的)?

我想你要求的是:

@MapKeyJoinColumn("RESOURCE_TYPE_ID")
在ElementCollection上


然后还指定可嵌入数据库上资源类型的FK映射的列名。

找到解决方案了吗?下面的一个有效吗?可能重复