JPA Repository Join - 从数据库中检索数据时连续循环数据
JPA Repository Join - Continuous Loop of data when retrieving data from DB
我有两个存储库 - 用户和地址。
用户与地址具有一对一的关系,并且它们通过 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
添加到 User
class 的 address
字段,并将 @JsonManagedReference
添加到 user
的字段Address
class.
我有两个存储库 - 用户和地址。
用户与地址具有一对一的关系,并且它们通过 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
添加到 User
class 的 address
字段,并将 @JsonManagedReference
添加到 user
的字段Address
class.