JsonIgnore的使用


在使用Hibernate进行一对多关联关系映射时,在进行查询时,出现

Infinite recursion (StackOverflowError) (through reference chain

错误信息。

(1)PersonEntity

@Entity( name = "t_person")
public class PersonEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birth;

    @OneToMany
    @JoinColumn(name = "person_id")
    private List<AddressEntity> addresses;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public LocalDate getBirth() {
        return birth;
    }

    public void setBirth(LocalDate birth) {
        this.birth = birth;
    }

    public List<AddressEntity> getAddresses() {
        return addresses;
    }

    public void setAddresses(List<AddressEntity> addresses) {
        this.addresses = addresses;
    }
}

(2)AddressEntity

@Entity( name = "t_address")
public class AddressEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String address;

    private char flag;

    @ManyToOne
    private PersonEntity person;

    public Long getId() {
        return id;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public char getFlag() {
        return flag;
    }

    public void setFlag(char flag) {
        this.flag = flag;
    }

    @JsonIgnore
    public PersonEntity getPerson() {
        return person;
    }

    @JsonProperty
    public void setPerson(PersonEntity person) {
        this.person = person;
    }
}

说明:在getPerson上面增加@JsonIgnore注解即可解决,但是此时在通过JSON方式进行保存时,则无法保存person对象,通过在setPerson上面增加@JsonProperty解决。

{
    "address": "中国",
    "flag": "0",
    "person": {
        "id": 2
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM