У меня два класса.
public class Reservation {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true, mappedBy = "reservation")
private List<Night> nights; \\assume getters and setters
}
public class Night {
@ManyToOne
@JoinColumn(name = "RESERVATION_ID")
private Reservation reservation;
}
Мои сохранения работают так:
Reservation r = new Reservation();
r.getNights().add(new Night());
return dao.save(r);
Это работает, так как спасает Резервацию и спасает Ночь. Но когда я смотрю на базу данных, столбец RESERVATION_ID в таблице NIGHT имеет значение null.
В предыдущих проектах (до обновления до Java 8 и JPA 2.1) мне не нужно было вручную устанавливать родительский объект для дочернего объекта, чтобы эта ассоциация сохранялась. Что-то изменилось, или я что-то не так делаю?
Редактировать:
Это правильно сохраняет ассоциацию, но раньше в этом не было необходимости.
Reservation r = new Reservation();
Night n = new Night();
n.setReservation(r);
r.getNights().add(n);
return dao.save(r);
Did something change, or am I doing something wrong?Таким образом, ответ, вы не пропали без вести. Вот так это должно быть реализовано. Однако вы можете сделать его однонаправленным и добавлять/удалять их по отдельности. Это ваш выбор (на мой взгляд). - person pms   schedule 23.07.2014r.getNights().add(new Night());(до редактирования) должно работать, чтобы сохранить ассоциацию? - person Risu   schedule 23.07.2014