Part2 项目中JPA的使用2
1.一对多
1.创建一的一方实体类和多的一方实体类
Org表
@Entity
@Table(name = "us_org")
@setter
@getter
public class Org implements Serializable {
private static final long serialVersionUID = -4990123427542971546L;
@Id
private String id;
private String orgName;
private String orgPid;
private String orgType;
private String orgCode;
private String orgLeaderId;
private String orgContacts;
private String orgContactsMoblie;
private Integer isUp;
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
//mappedBy = "org" 表示放弃维护,且"org"需要与维护一方属性值相同
@OneToMany(mappedBy = "org")
@JsonIgnore
private Set<User> users = new HashSet<>(0);
}
User表
@Entity
@Table(name = "us_user")
@NoArgsConstructor
@setter
@getter
public class User implements Serializable {
private static final long serialVersionUID = 4297464181093070302L;
@Id
private String id;
private String mobile;
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
private String password;
private String name;
private Integer sex;
private Date joinDate;
private String job;
private String address;
private String archivesIs;
private String archivesDes;
private String idCard;
private String nation;
private String level;
private String education;
private String personnelMumber;
//建立评论到文章的多对一关系
//在多的一方维护关系
@ManyToOne
// @JsonIgnore
//name = "orgId"关联到"us_user"表中外键org_id.
@JoinColumn(name = "orgId",referencedColumnName = "id")
private Org org;
//
@ManyToMany(mappedBy = "users")
@NotFound(action= NotFoundAction.IGNORE)
private Set<Role> roles = new HashSet<Role>();//用户与角色 多对多
}
2.多对多
User表
//User表同上
Role表
@Entity
@Table(name = "us_role")
public class Role implements Serializable {
private static final long serialVersionUID = 594829320797158219L;
@Id
private String id;
private String name;
private String description;
private String orgId;
//建立从类型到文章的多对多关系
@ManyToMany(cascade = {CascadeType.MERGE})
@JoinTable(
//中间表名称
name = "us_user_role",
//中间表的外键字段关联当前实体类所对应表的主键字段
joinColumns = {@JoinColumn(name = "roleId", referencedColumnName = "id")},
//中间表的外键字段关联对方类所对应表的主键字段
inverseJoinColumns = {@JoinColumn(name = "userId", referencedColumnName ="id")}
)
@JsonIgnore
@NotFound(action= NotFoundAction.IGNORE)
private Set<User> users = new HashSet<>(0);
@ManyToMany(mappedBy = "roles")
@NotFound(action= NotFoundAction.IGNORE)
// @JsonIgnore
private Set<Permission> permissions = new HashSet<>();//用户与角色 多对多
3.多对多对表的维护
@JoinTable(
//中间表名称
name = "中间表名",
//中间表的外键字段关联当前实体类所对应表的主键字段
joinColumns = {@JoinColumn(name = "关联的外键", referencedColumnName = "主键字段")},
//中间表的外键字段关联对方类所对应表的主键字段
inverseJoinColumns = {@JoinColumn(name = "对方表关联的外键", referencedColumnName ="对方表的主键")}
)
```