我正在使用数据库 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 注释,您可以在您的删除制造商服务方法中手动在其中进行迭代。
添加回答
举报
0/150
提交
取消