簡體   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