6

我创建了一个名为 Movie 的类,其中包含以下字段:

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

如您所见,我使用了hibernate注释并且对象是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)

我是休眠的新手,不知道到底发生了什么......请帮助我!

4

5 回答 5

4

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

于 2010-12-02T00:33:10.803 回答
2

我也面临同样的问题。已经很晚了,但我认为它会帮助其他人。使用@MapKeyColumn。这是我的简单代码

@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();
于 2016-11-11T20:11:14.690 回答
0

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

于 2010-12-01T13:45:03.393 回答
0

属性不应该只是一种List<String>类型吗?

听起来 Hibernates 的困惑和我的一样,为什么 Properies 是 Map 而不是列表?你到底想在那里做什么?

于 2010-12-01T13:38:01.773 回答
-1

你有属性的getter和setter吗?

于 2010-12-01T13:37:23.287 回答