繁体   English   中英

如何为相互引用的嵌套实体创建 DTO?

[英]How do I create DTOs for nested entities referencing each other?

假设我有两个这样的实体,

用户实体:

public class Users {
  @Basic
  @Column(name = "USER_NAME")
  private String name;

  @Basic
  @Column(name = "USER_ADDRESS")
  private String address;

  @ManyToOne
  @JsonBackReference
  @JoinColumn(name = "PERSON_ID")
  private Person personData;
}

个人实体:

public class Person {
  @Id
  @Column(name = "PERSON_ID")
  private Long personId

  @Basic
  @Column(name = "USER_ADDRESS")
  private String address;

  @OneToMany(mappedBy="personData", cascase = CascadeType.ALL, orphanRemoval = true)
  @JsonManagedReference
  List<Users> users;
}

现在,当我进行单元测试时,如何为这两个实体创建 DTO? 此外,当我尝试在我的服务中访问这些实体时,由于嵌套实体,它给了我 StackOverflow 异常。

当我尝试在我的服务中访问这些实体时,由于嵌套实体,它给了我 StackOverflow 异常。

在您添加注释@JsonManagedReference@JsonBackReference之前应该是这种情况。 如果这些注释继续出现 SO 错误,则您的实体存在其他问题,与这些嵌套字段无关。

现在,当我进行单元测试时,如何为这两个实体创建 DTO?

您拥有现在的实体的方式相同,但您执行以下操作之一:

  • 您再次将注释@JsonManagedReference@JsonBackReference放在这些 DTO 上,就像您在实体中使用它们一样。

  • 你把这种关系分解成单方面的关系。 因此,例如UsersDto没有personData字段或PersonDto没有List<UsersDto> users

但是DTOs通常会在表中带来更多功能,以便考虑使用它们。 只有直接在实体上使用上述注释,才能轻松避免堆栈溢出这样小的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM