Java Hibernate映射exception! (无法确定类型:java.util.Map)

我创建了一个名为Movie的课程,其中包括以下字段:

@Id @GeneratedValue private Long id; private String name; @ElementCollection(targetClass = String.class) private Map properties; private Double rate; private Integer votersCount; private Date releaseDate; private Integer runtime; @ManyToMany @JoinTable(name = "movie_director") @IndexColumn(name = "directorIndex") private List directors; @ManyToMany @JoinTable(name = "movie_writer") @IndexColumn(name = "writerIndex") private List writers; @OneToMany @IndexColumn(name = "roleIndex") private List movieRoles; @ManyToMany @JoinTable(name = "movie_genre") @IndexColumn(name = "genreIndex") private List genres; 

如你所见,我使用了hibernate注释,对象是bean。 但是当我尝试使用以下代码打开我的hibernate会话时……

 session = HibernateSessionFactory.getSessionFactory().openSession(); 

我遇到了一个无法映射Java.Util.Map类的问题。 这是exception堆栈跟踪:

 org.hibernate.MappingException: Could not determine type for: java.util.Map, for columns: [org.hibernate.mapping.Column(properties)] at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266) at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253) at org.hibernate.mapping.Property.isValid(Property.java:185) at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:410) at org.hibernate.mapping.RootClass.validate(RootClass.java:192) at org.hibernate.cfg.Configuration.validate(Configuration.java:1099) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1284) at main.HibernateSessionFactory.getSessionFactory(HibernateSessionFactory.java:29) at main.MainClass.main(MainClass.java:26) 

我是新来的冬眠,并不确切知道发生了什么……请帮助我!

那是因为你必须使用一些jpa2实现! 这家伙有同样的问题

属性不应该只是List类型吗?

这听起来像Hibernates混淆与我的相同,这就是为什么Properies是地图而不是列表? 你到底想要做什么?

啊啊,我看,它是一个。 除非你使用最新的jar,否则我认为你不能映射原语。 https://forum.hibernate.org/viewtopic.php?t=955308 。 检查该链接。 你能用键和值创建一个名为Properties的类,然后使用它吗? 我有类似的问题,我不得不使用这种方法。

我也面临同样的问题。现在已经很晚了,但我觉得它会对其他人有所帮助。使用@ MapKeyColumn.here是我的简单代码

 @ElementCollection(targetClass=String.class) @MapKeyColumn(name="Employee_Position") private Map position=new HashMap(); 

你有属性的getter和setter吗?