【发布时间】:2017-07-24 12:01:24
【问题描述】:
我有一个 Spring Data Jpa/Rest Web 应用程序。
我创建了两个实体,A 和 B,其中实体 A 包含多个 B 实体。
DTO 类定义为:
Getter/Setter 被省略。
@Entity
public class A implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany
@JoinColumn(name = "a_id")
private List<B> b = new LinkedList<>();
}
@Entity
public class B implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String bType;
}
各个存储库扩展了 PagingAndSortingReposity。
目前,为了创建 A 类型的记录,我创建了一组指向其子实体(即 Bs)的链接。它工作正常,但是当我尝试更新记录时,我发现使用相同的方法只更新 json 的第一级,其余保持不变。
我的问题是:如何将实体 A 与新的实体 B 集合一起更新。
【问题讨论】:
-
应设置级联类型:vladmihalcea.com/2015/03/05/… 例如:
@OneToMany(cascade = CascadeType.ALL) -
是的,我已经添加了。据我了解,当 B 实体添加到 A 时,它应该会自动创建它们。但是,我无法以这种方式创建它们。这就是为什么我首先必须分别创建它们中的每一个,然后在创建 A 时将一组链接传递给 B 实体。
-
我已经设置了一个测试来模拟你的情况,它似乎有效。您的存储库是否扩展了
JpaRepository(或只是PagingAndSortingRepository)?
标签: java spring hibernate rest jpa