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
Hibernate/spring数据jpa中的单向一对多关联_Hibernate_Spring Data Jpa - Fatal编程技术网

Hibernate/spring数据jpa中的单向一对多关联

Hibernate/spring数据jpa中的单向一对多关联,hibernate,spring-data-jpa,Hibernate,Spring Data Jpa,我对Hibernate/spring数据jpa不熟悉,我正在尝试实现一种单向的@OneToMany关系 我的父类如下所示: @Entity public class Parent { @Id @GeneratedValue private int id; @OneToMany(fetch = EAGER) @JoinColumn(name = "parent_id") private List<Child> children; }

我对
Hibernate
/
spring数据jpa
不熟悉,我正在尝试实现一种单向的
@OneToMany
关系

我的父类如下所示:

@Entity
public class Parent {

    @Id
    @GeneratedValue
    private int id;

    @OneToMany(fetch = EAGER)
    @JoinColumn(name = "parent_id")
    private List<Child> children;
}
现在我要坚持一个新的孩子通过

Child newChild = new Child();
newChild.setName("child_1");

this.parentService.findParentByParentId(1).getChildren().add(newChild);
this.childService.saveChild(newChild);
但当我查看数据库时,子表中的外键未设置:

-----------------------------------------
|  id |    name       |    parent_id    |
-----------------------------------------
|  1  |    child_1    |    NULL         |
-----------------------------------------

对这里的问题有什么建议吗?谢谢

我已经查看了映射,它没有问题。我甚至还与一些我用来举办JPA研讨会的人进行了比较,而你的应该可以

我敢打赌,问题在于你开始交易的地方。事务应该在执行代码的方法中启动

Child newChild = new Child();
newChild.setName("child_1");

this.parentService.findParentByParentId(1).getChildren().add(newChild);
this.childService.saveChild(newChild);
否则JPA的工作单元将看不到您在父级中添加了子级

我强烈建议您阅读spring文档中解释此问题的部分,否则您将在绝望中度过数天,试图找出它不起作用的原因

Child newChild = new Child();
newChild.setName("child_1");

this.parentService.findParentByParentId(1).getChildren().add(newChild);
this.childService.saveChild(newChild);