java - Hibernate join columns not by a primary key reference -
i have user , role classes manytomany relationship. when i'm adding role object list roles in user object 'user_roles' table columns 'username' , 'role_name' gets populated user , role objects primary keys' ids. wanted know whether possible reference not primary keys(ids) , username , role.name in columns instead?
@entity @table(name = "users") @secondarytable(name = "user_info", pkjoincolumns = { @primarykeyjoincolumn(name = "info_id", referencedcolumnname = "user_id") }) public class user { @id @column(name = "user_id") @generatedvalue(strategy = generationtype.identity) private int id; @column(name = "username") private string username; @column(name = "password") private string password; @manytomany @jointable(name="user_roles", joincolumns= {@joincolumn(name="username"/*, referencedcolumnname="username"*/)}, inversejoincolumns= {@joincolumn( name="role_name"/*, referencedcolumnname="role_name"*/)} ) private list<role> roles; @entity @table(name = "roles") public class role { @id @column(name = "role_id") @generatedvalue(strategy = generationtype.identity) private int id; @column(name = "role_name") private string name; @manytomany private list<user> users; also if remove comments around referencedcolumnname error when trying fetch users database. haven't added data database when querying empty database i'm getting error:
caused by: org.hibernate.hibernateexception: found shared references collection: com.recipee.model.user.roles
the reason i'm using such database schema because i'm trying use tomcat realm authentication need username , role_name in 1 database table.
Comments
Post a Comment