org.hibernate.MappingException:无法确定类型:java.util.List,在表:Schedule_assignedRoles,对于列:assignedRoles

org.hibernate.MappingException: Could not determine type for: java.util.List, at table: Schedule_assignedRoles, for columns: assignedRoles

我需要帮助,我正在尝试使用地图,但出现了以下错误:

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: Schedule_assignedRoles, for columns: [org.hibernate.mapping.Column(assignedRoles)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:390)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:363)
at org.hibernate.mapping.Collection.validate(Collection.java:310)
at org.hibernate.mapping.IndexedCollection.validate(IndexedCollection.java:74)
at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:333)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:443)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802)

这里是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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


我认为使用@ManyToMany@OneToMany就足够你完成任务了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@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<>();

}