#hibernate #hibernate-mapping
#переход в режим гибернации #переход в режим гибернации-сопоставление
Вопрос:
Я пытаюсь сохранить следующий объект, но получаю исключение сопоставления «Не удалось определить тип». Я не могу найти подходящий пример для того же. Я пробовал использовать @AttributeOverrides
, но это не помогло.
Даже в официальном документе я не нашел подходящего образца официального сайта
Сущность:
@Entity
@Table(name="Album")
public class Album {
@Id
@GeneratedValue
private int albumid;
@Column(name="aname")
private String aname;
@ElementCollection
@MapKeyColumn(name = "event")
@Column(name = "photoName")
@CollectionTable(name = "event_photos")
private Map<String,List<String>> photos;
// --- Set and get methods
}
Основной метод:
Session session = HibernateUtil.getSessionFactory().openSession();
//Photo name
List<String> list = new ArrayList<>();
list.add("Running photo");
list.add("Standing photo");
list.add("Sitting photo");
// Event
Map<String,List<String>> map1 = new HashMap<>();
map1.put("Engagement", list);
map1.put("Marriage", list);
Album album = new Album("Asia",map1);
System.out.println("Inserting Album");
session.beginTransaction();
session.save(album);
session.getTransaction().commit();
Исключение:
Initial SessionFactory creation failed.org.hibernate.MappingException: Could not determine type for: java.util.List, at table: event_photos, for columns: [org.hibernate.mapping.Column(photoName)]
Exception in thread "main" java.lang.ExceptionInInitializerError
at hibernate.HibernateAssignment.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:20)
at hibernate.HibernateAssignment.util.HibernateUtil.<clinit>(HibernateUtil.java:11)
at hibernate.HibernateAssignment.topic3.main.TopicThreeAssignmentTwoManager.main(TopicThreeAssignmentTwoManager.java:22)
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: event_photos, for columns: [org.hibernate.mapping.Column(photoName)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)
at org.hibernate.mapping.Collection.validate(Collection.java:315)
at org.hibernate.mapping.IndexedCollection.validate(IndexedCollection.java:89)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1362)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
at hibernate.HibernateAssignment.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16)
Комментарии:
1. Я не знаю, как работает большая часть исходного кода Hibernate, но я очень хорошо знаком с системой типов, и я могу с высокой степенью уверенности сказать вам, что подобная структура не поддерживается.
2. @coladict Спасибо за ваш комментарий 🙂