JPA Repository Join-从数据库检索数据时的数据连续循环

问题描述

我有两个存储库-用户和地址。

用户与地址具有一对一关系,并且通过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 }类。