猿问

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

我正在使用数据库 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;


//

}

如何解决这个问题?



慕田峪4524236
浏览 177回答 1
1回答

Cats萌萌

您可以使用:@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.REMOVE)private Set<Car> cars;然后当制造商被删除时,与该制造商相关的所有汽车也将被删除。如果所有汽车都需要制造商,这是有道理的。如果汽车可以在没有制造商的情况下存在,那么您可以改用以下代码(将其放入制造商实体中):@PreRemoveprivate void preRemove() {&nbsp; &nbsp;for (Car car: cars) {&nbsp; &nbsp; &nbsp; car.setManufacturer(null);&nbsp; &nbsp;}}这样,属于现已删除的制造商的汽车仍将存在,但制造商将为空。如果您不想使用 @PreRemove 注释,您可以在您的删除制造商服务方法中手动在其中进行迭代。
随时随地看视频慕课网APP

相关分类

Java
我要回答