我上了一个带有电影名字的班级,上面有福特字段:

    @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?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top