无法确定类型:java.util.Map:JPA2 地图注释

Could not determine type for: java.util.Map: JPA2 Map annotation

我在独立模式下使用 JPA。启动 persistenceManager 时出现此错误: 工厂 = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);

我已经测试了几个在网上抓取的变通方法...没有成功。 你能给我一些线索吗?

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

我已经这样配置了我的映射:

@ElementCollection(targetClass = Integer.class)
@MapKeyClass(InitRegister.class)
private Map<Integer, InitRegister> initRegisters = new HashMap<>();

我做错了什么?

提前致谢!

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

另一方面,@MapKeyClass指的是Map key的类型,是Integer类型。

所以要纠正你的错误,你只需切换类型:

@ElementCollection(targetClass = InitRegister.class)
@MapKeyClass(Integer.class)
private Map<Integer, InitRegister> initRegisters;

如果您使用泛型,则无需指定 targetClassMapKeyClass

所以这个也应该没问题:

@ElementCollection
private Map<Integer, InitRegister> initRegisters;

此外,请记住 @ElementCollection 仅用于基本类型和可嵌入类型。如果你的 InitRegister class 恰好是一个实体类型,那么你不应该使用 @ElementCollection。您应该使用集合值关系映射,@OneToMany@ManyToMany.

找到的解决方案:

实际上,所有更改都是在声明中完成的。我尝试在 getters 字段上添加注释并且......它有效。

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

问题已解决。