代码之家  ›  专栏  ›  技术社区  ›  AlphaTry

春季启动更新父记录使子记录丢失对null的FK引用

  •  0
  • AlphaTry  · 技术社区  · 2 年前

    我有一个非常简单的父子关系,重点是父母和它的多子记录都可以在一次拍摄中保存。我可以成功地执行“创建”操作,并且为父记录和子记录保存记录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之间的比较 enter image description here

    0 回复  |  直到 2 年前