Получение исключения при сохранении сопоставления коллекции в режиме гибернации

#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 Спасибо за ваш комментарий 🙂