javahibernatejpamappingexception

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


I need a help, I'm trying to use a Map, but I got this error:

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)

here my code:

@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
}

thank's! :D


Solution

  • I think using @ManyToMany or @OneToMany is enough for your task

    @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<>();
    
    }