Исключение картирования Java Hibernate! (Не удалось определить тип для: java.util.map)

StackOverflow https://stackoverflow.com/questions/4324839

Вопрос

Я сделал класс с именем фильма слиями слиявшими полями:

    @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. Но когда я пытаюсь открыть сеанс Hibernate со следующим кодом ...

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.. Отказ Проверьте эту ссылку. Не могли бы вы сделать класс вызываться как свойства с ключом и значением, а затем использовать его? У меня была похожая проблема, и мне пришлось использовать этот подход.

У вас есть Gotter и Setter для свойств?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top