为了账号安全,请及时绑定邮箱和手机立即绑定

非继承关系违反参照完整性约束

非继承关系违反参照完整性约束

慕田峪4524236 2021-08-19 13:32:12
我正在使用数据库 H2(内存中)和 Hibernate 开发一个简单的 CRUD Spring boot REST 应用程序,汽车实体和制造商实体之间存在多对一关系。@Entity@Table(name = "car")public class Car {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Long id;    @JoinColumn(name = "manufacturerId")    @ManyToOne()    private Manufacturer manufacturer; /// }@Entity@Table(name = "manufacturer")public class Manufacturer {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Long id;    @OneToMany(mappedBy = "manufacturer")    private Set<Car> cars;//}如何解决这个问题?
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用:


@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.REMOVE)

private Set<Car> cars;

然后当制造商被删除时,与该制造商相关的所有汽车也将被删除。


如果所有汽车都需要制造商,这是有道理的。如果汽车可以在没有制造商的情况下存在,那么您可以改用以下代码(将其放入制造商实体中):


@PreRemove

private void preRemove() {

   for (Car car: cars) {

      car.setManufacturer(null);

   }

}

这样,属于现已删除的制造商的汽车仍将存在,但制造商将为空。如果您不想使用 @PreRemove 注释,您可以在您的删除制造商服务方法中手动在其中进行迭代。


查看完整回答
反对 回复 2021-08-19
  • 1 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信