Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA 2.1外键isn';多通叶栅的节能_Java_Hibernate_Jpa_Java 8_Jpa 2.1 - Fatal编程技术网

Java JPA 2.1外键isn';多通叶栅的节能

Java JPA 2.1外键isn';多通叶栅的节能,java,hibernate,jpa,java-8,jpa-2.1,Java,Hibernate,Jpa,Java 8,Jpa 2.1,我有两节课 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 =

我有两节课

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;
}
这是可行的,因为它可以节省预订,也可以节省夜晚。但是当我查看数据库时,NIGHT表中的列RESERVATION_ID为null

在以前的项目中(升级到Java8和JPA2.1之前),为了保存关联,我不需要手动设置子对象上的父对象。是有什么变化,还是我做错了什么

编辑:

这样可以正确保存关联,但以前不需要这样做

Reservation r = new Reservation();
Night n = new Night();
n.setReservation(r);
r.getNights().add(n);
return dao.save(r);

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


谢谢你的链接,但我不知道这对回答我的问题有什么帮助。正如我在代码中所显示的,这是一种双向关系。这回到了你的问题
有什么变化吗,或者我做错了什么吗?
所以答案是,你没有失踪。这就是它应该实施的方式。但是,您可以将其设置为单向,并单独添加/删除它们。那是你的选择(好的)。请原谅我的困惑,但你是说
r.getNights().add(newnight())(编辑前)应可用于保存关联?抱歉,我的错误。是,您需要在子对象中设置父对象。你可以在父类(子类的getter方法)中完成。好吧,编辑之后应该是这样的,编辑之前只是一些我不应该依赖的自动魔法。对的
Reservation r = new Reservation();
Night n = new Night();
n.setReservation(r);
r.getNights().add(n);
return dao.save(r);