【发布时间】:2016-09-02 09:04:17
【问题描述】:
让我们假设一个简单的 1 Father -> n Children 实体关系(getters/setters 省略):
@Entity
public class Father {
@Id
@GeneratedValue
private Integer id;
@OneToMany(mappedBy="father", cascade=CascadeType.ALL)
private List<Child> children = new ArrayList<>();
...
}
@Entity
public class Child {
@Id
@GeneratedValue
private Integer id;
@ManyToOne(cascade=CascadeType.ALL)
private Father father;
...
}
现在尝试通过简单地将孩子添加到父亲来更新这种关系时,它不起作用,因为 Child.father 没有得到更新:
Child child = new Child();
// optionally persist child first, tried
father.getChildren().add(child);
...save father
我尝试使用不同的 CascadeTypes,但似乎无法自动更新 Child.father 引用。我知道传统的方法是使用“addChild”方法,但我想知道是否有自动的方法?
我的配置是 Spring Boot + JPA (Hibernate) + H2,自动创建到数据库。有趣的是,我发现一些博客帖子似乎和我在这里所做的完全一样,但对他们来说它是有效的,但对我来说却不是。奇怪。
【问题讨论】:
标签: java hibernate jpa spring-data spring-data-jpa