bas*_*seo 7 java jpa spring-boot
我正在使用 Spring Boot、REST 和 JPA 来构建我的应用程序。在应用程序中,有 4 个具有一对多关系的实体。
是否可以在一次保存操作中保存多个实体?
请帮忙!
父类.java
@Entity
@Data
@NoArgsConstructor
public class Parent implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
private String name;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<ChildA> childA = new ArrayList<>();
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<ChildB> childB = new ArrayList<>();
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<ChildC> childC = new ArrayList<>();
... getter and setter ...
}
Run Code Online (Sandbox Code Playgroud)
ChildA.java
@Entity
@Data
@NoArgsConstructor
public class ChildA{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "parentId")
private Parent parent;
private String name;
public void setParent(Parent parent){
this.parent = parent;
}
... getter and setter ...
}
Run Code Online (Sandbox Code Playgroud)
ChildB.java和ChildC.java与 ChildA.java 类似
存储库.java
@Repository
public interface repository extends JpaRepository<Parent, Long> {
}
Run Code Online (Sandbox Code Playgroud)
我想保存这个json。
{
"name": "parent-name",
"childA": [
{
"name": "parent-childA"
}
],
"childB": [
{
"name": "parent-childB"
}
],
"childC": [
{
"name": "parent-childC"
}
]
}
Run Code Online (Sandbox Code Playgroud)
D B
Parent
id | name
5 parent-name
ChildA
id | parent-id | name
1 | 5 | parent-childA
ChildB
id | parent-id | name
1 | 5 | parent-childA
ChildC
id | parent-id | name
1 | 5 | parent-childA
Run Code Online (Sandbox Code Playgroud)
我找到了答案。谢谢回复。
@RestController
public class ParentController {
@Autowired
private ParentRepository parentRepository;
@PutMapping("")
public void save(@RequestBody @Valid Parent parent) {
parentRepository.save(parent);
}
Run Code Online (Sandbox Code Playgroud)
Parent.java添加@JsonManagedReference
@JsonManagedReference
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<ChildA> childA = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
并且Child类 ChildA.java、ChildB.java、ChildC.java添加@JsonBackReference
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "parentId")
private Parent parent;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5797 次 |
| 最近记录: |