org.hibernate.MappingException: не удалось определить тип для: java.util.List, в таблице: Schedule_assignedRoles, для столбцов: assignRoles.

Мне нужна помощь, я пытаюсь использовать карту, но я получил эту ошибку:

Причина: org.hibernate.MappingException: Не удалось определить тип для: java.util.List, в таблице: Schedule_assignedRoles, для столбцов: [org.hibernate.mapping.Column(assignRoles)] в org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:390) в org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:363) в org.hibernate.mapping.Collection.validate(Collection.java:310) в org.hibernate.mapping.IndexedCollection.validate(IndexedCollection.java:74) в org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:333) в org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactory3)jilg.javder.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802)

вот мой код:

@Entity
public class Schedule extends PersistentObject implements Comparable<Schedule> {
   private String title;

   @ManyToOne
   private Agent target;

   @ElementCollection
   @MapKeyColumn(nullable = false)
   @Column(nullable = false)
   private Map<Long, List<Role>> assignedRoles = new HashMap<>();

   //gets e setters
}

Спасибо!:D

1 ответ

Решение

Я думаю, используя @ManyToMany или же @OneToMany достаточно для вашей задачи

@Entity
public class Schedule extends PersistentObject implements Comparable<Schedule> {

   @Column
   private String title;

   @ManyToOne
   private Agent target;

   @OneToMany 
   private List<Unit> units = new List<>();

}

@Entity
public class Unit {

  @ManyToMany 
  private List<Role> assignedRoles = new List<>();

}
Другие вопросы по тегам