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 ="对方表的主键")}
    )
    ```
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值