有人可以幫我解決這個問題嗎?我嘗試過使用maptruct,它工作得很好,但只適用於沒有雙向關係的實體。如何在Java中將雙向實體映射到DTO
比如我有實體:
@Entity
public class Pacients implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int pacientId;
// bi-directional many-to-one association to Doctori
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "doctorId")
private Doctors doctor;
//setters and getters
}
和
@Entity
public class Doctors implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int doctorId;
// bi-directional many-to-one association to Pacienti
@OneToMany(mappedBy = "doctor")
private List<Pacients> pacients;
//setters and getters
}
DTO的:
public class PacientsDto implements Serializable {
private int pacientId;
private Doctors doctor;
//setters and getters
}
public class DoctorsDto implements Serializable {
private int doctorId;
private List<Pacients> pacients;
//setters and getters
}
當我試圖把它們映射在DTO的我得到的,因爲那一個的StackOverflowError雙向關係。
任何想法如何解決這個問題?我也將接受不使用mapstruct的解決方案。
如果需要任何細節,請讓我知道。 謝謝!
Java和Entity Framework在同一個問題中。你確定嗎? – DavidG
你說得對。我將重點放在如何提出問題以儘可能清楚。謝謝! – Aditzu
我假設你的Dtos應該互相引用,即'PacientsDto'不應該引用'Doctors',而應該指向'DoctorsDto',並且'DoctorsDto'也是相同的。 – Dominik