我有两个类(class)。
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,也保存了 Night。但是当我查看数据库时,NIGHT 表中的列 RESERVATION_ID 为空。
在以前的项目中(在升级到 Java 8 和 JPA 2.1 之前),我不需要手动设置子对象的父对象来保存该关联。有什么变化,还是我做错了什么?
编辑:
这可以正确保存关联,但过去并不是必需的。
Reservation r = new Reservation();
Night n = new Night();
n.setReservation(r);
r.getNights().add(n);
return dao.save(r);
最佳答案
根据下面链接中提供的 JPA 示例,您需要在子对象中设置父对象。 你可以在Parent类中完成(子类的getter方法)
关于java - JPA 2.1 外键未在 ManyToOne 级联上保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897183/