У меня есть следующее отображение Hibernate. я хочу отобразить два сопоставления @OneToOne на один и тот же объект класса, но у меня возникают проблемы.
// Инфо класс
public class Info {
@Id
@Column(name="info_id")
private String info_id;
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER, orphanRemoval = true, mappedBy = "info")
private Diary dairy1;
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER, orphanRemoval = true, mappedBy = "info")
private Diary dairy2;
// I use this method to set the dairy
public void setDairy(Dairy dairy) {
if (getDairy1() == null) {
setDairy1(dairy);
} else if (getDairy2() == null) {
setDairy2(dairy);
}
}
// OTHER GETTERS EN SETTERS OMITTED
}
// Молочный класс
public class Dairy {
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "info_id")
private Info info;
}
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я сохраняю Info
с dairy1
, установленным на новый объект Dairy
, а затем извлекаю Info
, тогда оба dairy1
en dairy2
инициализируются с одним и тем же объектом dairy1
,Я ожидаю, что dairy2
будет null , но он инициализируется тем же объектом dairy1
.
Я гуглил и гуглил, но ответа нет.
Любое руководство приветствуется