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