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