关于使用JPA多对多表关联关系实体构造使用@JsonIgnore注解不生效仍死循环的问题

看看你是不是用Lombok生成代码了,去掉lombok注解手动写代码试试。

用户与角色,多对多
用户表实体:

package com.ihrm.domain.system;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

@Entity
@Table(name = "bs_user")
//@Data@NoArgsConstructor@AllArgsConstructor
public class User implements Serializable {
    private static final long serialVersionUID = -7611123338481573454L;
    @Id
    private String id;// id
    private String mobile;// 手机号码
    private String username;// 用户名称
    private String password;// 密码
    private Integer enable_state;// 启用状态 0是禁用,1是启用
    private Date create_time;// 创建时间
    private String department_id;// 部门id
    private Date time_of_entry;// 入职时间
    private Integer form_of_employment;// 聘用形式
    private String work_number;// 工号
    private String form_of_management;// 管理形式
    private String working_city;// 工作城市
    private Date correction_time;// 转正时间
    private Integer in_service_status;// 在职状态 1.在职 2.离职
    private String company_id;// 企业id
    private String company_name;// 企业名称
    private String department_name;// 部门名称

    @ManyToMany
    /**
     * 忽略json转化
     */
    @JsonIgnoreProperties(value = "users")
    @JoinTable(name = "pe_user_role",joinColumns = {
            @JoinColumn(name = "user_id",referencedColumnName = "id")
    },
            inverseJoinColumns = {
            @JoinColumn(name = "role_id",referencedColumnName = "id")
    } )
    private Set<Role> roles = new HashSet<>();// 用户与角色,多对多

    public User() {
    }

    public User(String id, String mobile, String username, String password, Integer enable_state, Date create_time, String department_id, Date time_of_entry, Integer form_of_employment, String work_number, String form_of_management, String working_city, Date correction_time, Integer in_service_status, String company_id, String company_name, String department_name, Set<Role> roles) {
        this.id = id;
        this.mobile = mobile;
        this.username = username;
        this.password = password;
        this.enable_state = enable_state;
        this.create_time = create_time;
        this.department_id = department_id;
        this.time_of_entry = time_of_entry;
        this.form_of_employment = form_of_employment;
        this.work_number = work_number;
        this.form_of_management = form_of_management;
        this.working_city = working_city;
        this.correction_time = correction_time;
        this.in_service_status = in_service_status;
        this.company_id = company_id;
        this.company_name = company_name;
        this.department_name = department_name;
        this.roles = roles;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getEnable_state() {
        return enable_state;
    }

    public void setEnable_state(Integer enable_state) {
        this.enable_state = enable_state;
    }

    public Date getCreate_time() {
        return create_time;
    }

    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    }

    public String getDepartment_id() {
        return department_id;
    }

    public void setDepartment_id(String department_id) {
        this.department_id = department_id;
    }

    public Date getTime_of_entry() {
        return time_of_entry;
    }

    public void setTime_of_entry(Date time_of_entry) {
        this.time_of_entry = time_of_entry;
    }

    public Integer getForm_of_employment() {
        return form_of_employment;
    }

    public void setForm_of_employment(Integer form_of_employment) {
        this.form_of_employment = form_of_employment;
    }

    public String getWork_number() {
        return work_number;
    }

    public void setWork_number(String work_number) {
        this.work_number = work_number;
    }

    public String getForm_of_management() {
        return form_of_management;
    }

    public void setForm_of_management(String form_of_management) {
        this.form_of_management = form_of_management;
    }

    public String getWorking_city() {
        return working_city;
    }

    public void setWorking_city(String working_city) {
        this.working_city = working_city;
    }

    public Date getCorrection_time() {
        return correction_time;
    }

    public void setCorrection_time(Date correction_time) {
        this.correction_time = correction_time;
    }

    public Integer getIn_service_status() {
        return in_service_status;
    }

    public void setIn_service_status(Integer in_service_status) {
        this.in_service_status = in_service_status;
    }

    public String getCompany_id() {
        return company_id;
    }

    public void setCompany_id(String company_id) {
        this.company_id = company_id;
    }

    public String getCompany_name() {
        return company_name;
    }

    public void setCompany_name(String company_name) {
        this.company_name = company_name;
    }

    public String getDepartment_name() {
        return department_name;
    }

    public void setDepartment_name(String department_name) {
        this.department_name = department_name;
    }

    public Set<Role> getRoles() {
        return roles;
    }

    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }
}

角色表实体类:

package com.ihrm.domain.system;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

@Entity
@Table(name = "pe_role")
public class Role implements Serializable {
    private static final long serialVersionUID = 688233531029170145L;
    @Id
    private String id;// 主键ID
    private String name;// 权限名称
    private String description;// 说明
    private String company_id;// 企业id

    @JsonIgnoreProperties(value = "roles")
    @ManyToMany(cascade = CascadeType.REFRESH,mappedBy = "roles")
    private Set<User> users = new HashSet<>(0);// 角色与用户 多对多

    public Role() {
    }

    public Role(String id, String name, String description, String company_id, Set<User> users) {
        this.id = id;
        this.name = name;
        this.description = description;
        this.company_id = company_id;
        this.users = users;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getCompany_id() {
        return company_id;
    }

    public void setCompany_id(String company_id) {
        this.company_id = company_id;
    }

    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }
//    @JsonIgnore
//    @ManyToMany
//    @JoinTable(name = "pe_role_permission",joinColumns = {
//            @JoinColumn(name = "role_id",referencedColumnName = "id")
//    },
//    inverseJoinColumns = {
//            @JoinColumn(name = "permission_id",referencedColumnName = "id")})
//    private Set<Permission> permissions = new HashSet<>();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。