gpt4 book ai didi

hibernate - Hibernate/spring-data-jpa 中的单向一对多关联

转载 作者:行者123 更新时间:2023-12-05 01:24:27 34 4
gpt4 key购买 nike

我是 Hibernate/spring-data-jpa 的新手,我正在尝试实现单向 @OneToMany 关系。

我的父类是这样的:

@Entity
public class Parent {

@Id
@GeneratedValue
private int id;

@OneToMany(fetch = EAGER)
@JoinColumn(name = "parent_id")
private List<Child> children;
}

还有我的 child 类(class):

@Entity
public class Child {

@Id
@GeneratedValue
private int id;
private String name;
}

现在我想通过

持久化一个新的 child
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 |
-----------------------------------------

关于这里出了什么问题有什么建议吗?谢谢!

最佳答案

我已经查看了映射,没有任何问题。我什至与一些 code 进行了比较我曾经举办过 JPA 研讨会,你的应该可以。

我敢打赌,问题出在您开始交易的地方。事务应该从执行代码的方法开始

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

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

否则 JPA 的工作单元将看不到您在父级中添加了一个子级。

强烈建议您阅读 spring 文档中解释 declarative transaction management 的部分,否则您会在绝望中度过几天,试图找出它不起作用的原因。

关于hibernate - Hibernate/spring-data-jpa 中的单向一对多关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669826/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com