Исключение картографирования Java Hibernate! (Не удалось определить тип для: java.util.Map) - PullRequest
6 голосов
/ 01 декабря 2010

Я создал класс с названием 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)

Я новичок в спящем режиме и не знаю точно, что происходит ... пожалуйста, помогите мне!

Ответы [ 5 ]

4 голосов
/ 02 декабря 2010

потому что вы должны использовать некоторую реализацию jpa2! у этого парня была та же проблема

0 голосов
/ 11 ноября 2016

Я тоже сталкиваюсь с той же проблемой. Уже поздно, но я думаю, что это поможет другим .use @ MapKeyColumn. Вот мой простой код

@ElementCollection(targetClass=String.class)
@MapKeyColumn(name="Employee_Position")
private Map<String,String> position=new HashMap<String,String>();
0 голосов
/ 01 декабря 2010

Разве свойства не должны быть просто List<String> типа?

Звучит так, как будто Hibernates - то же самое, что и мое, поэтому почему Properies - это карта вместо списка?Что именно ты там пытаешься сделать?

0 голосов
/ 01 декабря 2010

Ааа, я вижу, это а.Я не думаю, что вы можете отобразить примитив, если вы не используете последнюю банку.https://forum.hibernate.org/viewtopic.php?t=955308. Проверьте эту ссылку.Не могли бы вы сделать класс с именем «Свойства» с ключом и значением, а затем использовать его?У меня была похожая проблема, и я должен был использовать этот подход.

0 голосов
/ 01 декабря 2010

Есть ли у вас как геттер, так и сеттер для свойств?

...