[英]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.