我在独立模式下使用JPA。启动persistenceManager时出现此错误: factory = 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<>();
我做错了什么?
提前谢谢!答案 0 :(得分:2)
targetClass
的 ElementCollection
属性指的是地图值的类型 - 在您的情况下,这是InitRegister
另一方面,@MapKeyClass
指的是Map键的类型,它是Integer
类型。
因此,为了解决您的错误,您只需切换类型:
@ElementCollection(targetClass = InitRegister.class)
@MapKeyClass(Integer.class)
private Map<Integer, InitRegister> initRegisters;
如果您使用的是泛型,则无需指定targetClass
和MapKeyClass
。
所以这个也应该没问题:
@ElementCollection
private Map<Integer, InitRegister> initRegisters;
另请注意,@ElementCollection
仅用于基本类型和可嵌入类型。如果您的InitRegister
类恰好是实体类型,则不应使用@ElementCollection
。您应该使用集合值关系映射,@OneToMany
或@ManyToMany
。
答案 1 :(得分:0)
实际上,所有变更都是在声明上完成的。我试图在getters字段上添加注释,并且......它可以工作。
不知道为什么。我知道这是一种很好的做法,但不是强制性的。
Prob解决了。