我有一个非常简单的父子关系,重点是父母和它的多子记录都可以在一次拍摄中保存。我可以成功地执行“创建”操作,并且为父记录和子记录保存记录FK也将设置为新创建的ParentID。但在“更新”操作中,FK引用将设置为
null
。
我使用的是SprinDataJPA,JpaRepository,它为DAO操作提供服务类。
使用
repo.save(entity)
保存和更新的方法。
以下是我的实体类
Question
可以有0个或多个
PossibleOption
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Question {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String text;
private String shortText;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "question_id")
private List<PossibleOption> options;
}
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PossibleOption {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "key_field")
private Integer key;
@Column(name = "value_field")
private String value;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "question_id")
private Question question;
}
以下是为POST和PUT请求传递的JSON之间的比较