如何删除平面图子项
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
我有 属性 个像这样的实体和平面图实体
@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