问题描述
用户与地址具有一对一关系,并且通过ID链接。请参见下面的代码段。当我使用JPA存储库提取数据时,基本上得到了一个恒定的数据循环。
EG:
<Data>
<User>
<id>1</id>
<name>Mary</name>
<dob>21/01/1990</dob>
<Address>
<id>1<id>
<address>123 Main Street</address>
<User>
<id>1</id>
<name>Mary</name>
<dob>21/01/1990</dob>
<Address>
<id>1<id>
<address>123 Main Street</address>
<User>
....
诸如此类,导致我的查询需要大量时间才能运行。无论如何,要阻止User对象在Address对象中返回?任何帮助将不胜感激。
@Entity
@Data
@Table(name = "ADDRESS")
public class Address{
@Id
@Column()
private String id;
@Column()
private String address;
@OnetoOne (fetch = FetchType.LAZY)
@JoinColumn(name = "id")
private User user;
}
@Entity
@Data
@Table(name = "User")
public class User{
@Id
@Column()
private String id;
@Column()
private String name;
@Column()
private String dob;
@OnetoOne ()
@JoinColumn(name = "id")
private Address address;
}
解决方法
这是正常行为。序列化程序调用getter来序列化数据,即使它们是惰性的,也被Hibernate Proxy
加载数据拦截。为防止这种情况,您必须在@JsonBackReference
类的address
字段中添加User
,并在@JsonManagedReference
的{{1}}字段中添加user
}类。