java - How to create many-to.many association with extra columns? -


i'm using hibernate , spring data.

i have 3 tables, first composite primary key.

table (grupo) ---------------- |pk idgrupo    | |pk nombre     | |              | |______________| 

also created 2 more tables usuario , grupo_matricula(result of relation many many between grupo , usuario).

table (grupo_matricula) ------------------ |pk idgrupos      | |   matricula_id  | |   grupos_id     | |   nombre        | |   aceptado      | |   propietario   | |                 | |_________________|  table (usuario) ---------------- |pk matricula  | |   nombre     | |   password   | |______________| 

i created 3 clases 1 entity (grupo), other pk embeddedid of grupo last entity (grupo_matricula).

@entity @table(name = "grupo")  public class grupo implements serializable {     @embeddedid     protected grupopk grupopk;     @onetomany( mappedby = "grupo_id", cascade=cascadetype.all)     private set<grupomatricula> grupomatriculas=new hashset<>(0); }   @embeddable public class grupopk implements serializable {     @column(name = "idgrupo")     private string idgrupo;     @column(name = "nombre")     private string nombre; }   @entity @table(name = "grupo_matricula") public class grupomatricula implements serializable {      @id     @generatedvalue     @column(name = "idgrupos")     private long idgrupos;      @manytoone(cascade = cascadetype.all)     @joincolumns({         @joincolumn(name = "idgrupo", insertable = false, updatable = false,referencedcolumnname = "idgrupo"),         @joincolumn(name = "nombre", insertable = false, updatable = false,referencedcolumnname = "nombre")     })     private grupo grupo;      @manytoone(cascade = cascadetype.all)     @joincolumn(name = "usuario", referencedcolumnname = "matricula")     private user usuario;       @column(name = "aceptado")     private short aceptado;      @column(name = "propietario")     private short propietario; }   @entity @table(name = "usuario")  public class user extends  implements serializable {      @id     @notnull     @pattern(regexp = "^[a-z0-9]*$")     @size(min = 1, max = 13)     @column(name = "matricula",length = 13, unique = true ,nullable = false)     private string matricula;      @jsonignore     @notnull     @size(min = 5, max = 100)     @column(length = 100)     private string password;      @size(max = 50)     @column(name = "nombre", length = 50)     private string nombre;      @jsonignore     @onetomany(cascade = cascadetype.all, mappedby = "usuario")     private set<grupomatricula> grupomatriculaset=new hashset<>(0); } 

when try run project, showed me error:

caused by: org.hibernate.annotationexception: mappedby reference unknown target entity property: com.mx.agora.domain.grupomatricula.grupo_id in com.mx.agora.domain.grupo.grupomatriculas 

the mappedby attribute indicates property name owns relationship, not column name. so, proper mapping is:

@onetomany(mappedby = "grupo", cascade=cascadetype.all) 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -