多對一的關係我們通常在多的一方來維護。現在使用tbUser和tbRole來完成例子,一個人只能有一個角色。
在user表中我們使用ManyToOne註解來完成關係映射,JoinColumn來設置關聯的外鍵在數據庫中的名稱。
@Entity
@Table(name = "tb_user")
@SequenceGenerator(name = "tb_user_sq",sequenceName = "tb_user_sqe")
public class TbUser extends BaseEntity{
/**
* 用戶名
*/
private String userName;
/**
* 登錄名
*/
private String loginName;
/**
* 登陸密碼
*/
private String passWord;
/**
* 手機號
*/
private String telPhone;
/**
* 一個用戶只有一個角色
*/
private TbRole tbRole;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getTelPhone() {
return telPhone;
}
public void setTelPhone(String telPhone) {
this.telPhone = telPhone;
}
@Id
@Override
@GeneratedValue(generator = "tb_user_sq",strategy = GenerationType.SEQUENCE)
public Long getId() {
return this.id;
}
@ManyToOne(cascade = CascadeType.REMOVE)
@JoinColumn(name = "tb_role_id")
public TbRole getTbRole() {
return tbRole;
}
public void setTbRole(TbRole tbRole) {
this.tbRole = tbRole;
}
}
在role中我們如果想直接使用這個關係的話,同樣添加一個外鍵字段,在外鍵字段上添加註解OneToMany(mappedBy = “tbRole”),mappdBy對應的是當前實體在外鍵實體中的字段名。
@Entity
@Table(name = "tb_role")
@SequenceGenerator(name = "tb_role_sq",sequenceName = "tb_role_sqe")
public class TbRole extends BaseEntity{
@Override
@Id
@GeneratedValue(generator = "tb_role_sq",strategy = GenerationType.SEQUENCE)
public Long getId() {
return this.id;
}
private String roleName;
private List<TbUser> tbUserList=new ArrayList<>();
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
@OneToMany(mappedBy = "tbRole")
public List<TbUser> getTbUserList() {
return tbUserList;
}
public void setTbUserList(List<TbUser> tbUserList) {
this.tbUserList = tbUserList;
}
}