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
无法确定:java.util.Map:JPA2映射批注的类型_Jpa_Dictionary_Mapping - Fatal编程技术网

无法确定:java.util.Map:JPA2映射批注的类型

无法确定:java.util.Map:JPA2映射批注的类型,jpa,dictionary,mapping,Jpa,Dictionary,Mapping,我在独立模式下使用JPA。启动persistenceManager时出现以下错误: factory=Persistence.createEntityManagerFactory(Persistence\u UNIT\u NAME) 我已经测试了几项围绕网络的工作。。。没有成功。 你能给我一些线索吗 无法确定的类型:java.util.Map。。。。。。。。。。。。。。。。。。 对于列:[org.hibernate.mapping.Column(initRegisters)] 我已按如下方式配置映

我在独立模式下使用JPA。启动persistenceManager时出现以下错误: factory=Persistence.createEntityManagerFactory(Persistence\u UNIT\u NAME)

我已经测试了几项围绕网络的工作。。。没有成功。 你能给我一些线索吗

无法确定的类型:java.util.Map。。。。。。。。。。。。。。。。。。 对于列:[org.hibernate.mapping.Column(initRegisters)]

我已按如下方式配置映射:

@ElementCollection(targetClass = Integer.class)
@MapKeyClass(InitRegister.class)
private Map<Integer, InitRegister> initRegisters = new HashMap<>();
@ElementCollection(targetClass=Integer.class)
@MapKeyClass(InitRegister.class)
私有映射initRegisters=newhashmap();
我做错了什么


提前谢谢

ElementCollection
targetClass
属性应用于映射时,指映射值的类型-在您的情况下,这是
InitRegister

另一方面,
@MapKeyClass
表示映射键的类型,它是一种
整数
类型

因此,要纠正错误,只需切换类型:

@ElementCollection(targetClass = InitRegister.class)
@MapKeyClass(Integer.class)
private Map<Integer, InitRegister> initRegisters;
另外,请记住,
@ElementCollection
仅用于基本类型和可嵌入类型。如果
InitRegister
类恰好是实体类型,则不应使用
@ElementCollection
。您应该使用集合值关系映射,可以是
@OneToMany
@ManyToMany

找到的解决方案:

实际上,所有的更改都是在声明上完成的。我试图在getters字段上添加注释,然后。。。。。它起作用了

不知道为什么。我知道这是一个很好的做法,但不是强制性的


问题已解决。

您所说的“实体类”是什么意思?由实体指定的类别?因为InitRegister是一个实体类。不可嵌入,实际上,它继承了一个超类。是的,实体类是用@entity注释的类
@ElementCollection
private Map<Integer, InitRegister> initRegisters;