如何删除平面图子项

How to delete floor plan children

我有 属性 个像这样的实体和平面图实体

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "properties", indexes = {@Index(name = "properties_parent_id_index", columnList = "parent_id", unique = true)})
public class PropertyEntity extends BaseEntity {



    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "property_id")
    private List<FloorPlanEntity> floorPlans;

....
...
}

现在我尝试删除子项并保存父项

像这样`

propertyEntity.getFloorPlans().clear();
propertyDataService.save(propertyEntity);

但它给出了这样的例外

原因:org.postgresql.util.PSQLException:错误:关系“floor_plans”的列“property_id”中的空值违反了非空约束

我想你可以使用 @OneToMany(orphanRemoval = true) 它提供了一种从数据库中删除孤立实体的方法。 因此,当它从列表中删除时,它应该从数据库中删除 FloorPlanEntity。 有一些教程解释: https://www.baeldung.com/jpa-cascade-remove-vs-orphanremoval#orphanremoval