在使用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 } }