5

我有两节课。

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

1 回答 1

1

根据下面链接中提供的 JPA 示例,您需要在子对象中设置父对象。您可以在 Parent 类中执行此操作(孩子的 getter 方法)

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

于 2014-07-22T22:05:52.907 回答