我有5个表,一个用户可以有多个模块/角色/工厂。 user_master
是具有用户详细信息的主表,而user_roles是具有模块/角色/工厂详细信息的子表。我的疑问是如何在模型类中编写关系。
user_master
------------
user_id int(10) unsigned
first_name varchar(50)
last_name varchar(50)
mail_id varchar(80)
user_status tinyint(4)
is_deleted tinyint(4)
created_by int(10)
created_date date
modified_by int(10)
modified_date date
user_roles
-----------
user_role_id int(10) unsigned
user_id int(10) unsigned
module_master_id int(10) unsigned
role_master_id int(10) unsigned
plant_master_id int(10) unsigned
module_master:
module_master_id int(10) unsigned
module_code int(10)
module_name varchar(50)
active_flag tinyint(4)
role_master:
role_master_id int(10) unsigned
module_master_id int(10) unsigned
role_code int(10)
role_name varchar(50)
active_flag tinyint(4)
plant_master:
plant_master_id int(10) unsigned
plant_code int(10)
plant_name varchar(50)
active_flag tinyint(4)
其余模块/角色/工厂具有其自己的主服务器,master_id
是主表的主键。
我只想编写user_master
和user_roles
模型类。需要一对多和多对一映射。
答案 0 :(得分:0)
对于一对多的实体类,您可以像下面这样:
@OneToMany
@OneToMany(mappedBy = "user")
private List<Role> roles;
@ManyToOne
在角色方面
@ManyToOne
@JoinColumn(name = "user")
private User user;
@ManyToMany
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "user_role",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private List<Role> roles= new ArrayList<>();
和角色方面:
@ManyToMany(mappedBy = "role")
private List<User> users = new ArrayList<>();
下面是一个示例,其中包含很多:
@Entity
public class UserRoleMaster implements Serializable {
@EmbeddedId
private UserRoleMasterId id;
@ManyToOne
@JoinColumn(name = "user_master_id", referencedColumnName = "user_master_id", insertable = false, updatable = false)
private UserMaster userMaster;
@ManyToOne
@JoinColumn(name = "user_roles_id", referencedColumnName = "user_roles_id", insertable = false, updatable = false)
private UserRoles userRoles;
//getter //setter //constructures
@Embeddable
public static class UserRoleMasterId implements Serializable {
@Column(name = "user_master_id")
protected Long userMasterId;
@Column(name = "user_roles_id")
protected Long userRolesId;
//constrcture //getter //setters
}
}