Java Hibernate映射异常! (无法确定以下类型:java.util.map)
-
29-09-2019 - |
题
我上了一个带有电影名字的班级,上面有福特字段:
@Id
@GeneratedValue
private Long id;
private String name;
@ElementCollection(targetClass = String.class)
private Map<String, String> properties;
private Double rate;
private Integer votersCount;
private Date releaseDate;
private Integer runtime;
@ManyToMany
@JoinTable(name = "movie_director")
@IndexColumn(name = "directorIndex")
private List<Person> directors;
@ManyToMany
@JoinTable(name = "movie_writer")
@IndexColumn(name = "writerIndex")
private List<Person> writers;
@OneToMany
@IndexColumn(name = "roleIndex")
private List<MovieRole> movieRoles;
@ManyToMany
@JoinTable(name = "movie_genre")
@IndexColumn(name = "genreIndex")
private List<Genre> genres;
如您所见,我使用了冬眠注释,而对象是bean。但是,当我尝试使用以下代码打开冬眠会话...
session = HibernateSessionFactory.getSessionFactory().openSession();
我遇到的问题无法映射java.util.map类。这是异常堆栈跟踪:
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实现!这个家伙有 同样的问题
其他提示
我也遇到了同样的问题。也很晚,但我认为这会帮助他人。使用 @mapkeycolumn。这是我的简单代码
@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();
不应该只是属性是一个 List<String>
类型?
听起来像是冬眠的混乱与我的相同,为什么适当是地图而不是列表?您到底想在那里做什么?
我看到的,它是。我认为除非您使用最新的罐子,否则您不能映射原始性。 https://forum.hibernate.org/viewtopic.php?t=955308. 。检查该链接。您能否将一个称为“键和价值”的属性称为属性,然后使用它?我也有类似的问题,我不得不使用这种方法。
您是否有属性的Getter和Setter?
不隶属于 StackOverflow