0

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

引起:org.hibernate.MappingException:无法确定类型:java.util.List,表:Schedule_assignedRoles,列:org.hibernate.mapping.SimpleValue 的[org.hibernate.mapping.Column(assignedRoles)]。 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) 在 org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:333) 在 org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:443) 在 org. 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

4

1 回答 1

0

我认为使用@ManyToManyor@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<>();

}
于 2016-05-19T13:02:44.473 回答