我有两个类。

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);

这可以正常工作,因为它可以保存预订,并可以保存夜晚。但是,当我查看数据库时,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类中执行此操作( child 的getter方法)

http://en.wikibooks.org/wiki/Java_Persistence/OneToMany

关于java - JPA 2.1外键未在ManyToOne级联上保存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24897183/

10-09 05:48