多个关联中级联删除状态的java问题
我对包含零件的删除订单有问题。我尝试了CascadeType
和fetch,但作为响应,我得到了错误:
Referential integrity constraint violation: "FKM25VEWW7LF2YTLPXGFELPMCEI: PUBLIC.ORDER_PARTS FOREIGN KEY(PART_ID) REFERENCES PUBLIC.PART(ID_PART) (3)"; SQL statement:
delete from part where id_part=?
@Entity
@Table(name = "client_order")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_order")
private Long id;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@Fetch(FetchMode.SELECT)
@JoinTable(name = "order_parts",
joinColumns = {@JoinColumn(name="client_order_id", referencedColumnName="id_order")},
inverseJoinColumns = {@JoinColumn(name="part_id", referencedColumnName="id_part")})
private List<Part> parts = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "id_client")
private Client client;
public Order() {
}
public Order(Long id) {
this.id = id;
}
}
@Entity
public class Part {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_part")
private Long id;
@Column(name = "part_name", nullable = false)
private String name;
@Column(name = "price")
private Double price;
@Column(name = "selected", nullable = false, columnDefinition = "boolean default false" )
private boolean selected;
@Enumerated(EnumType.STRING)
private Category category;
@ManyToMany(mappedBy = "parts")
private List<Order> orders = new ArrayList<>();
public Part() {
}
public Part(String name, Double price, boolean selected) {
this.name = name;
this.price = price;
this.selected = selected;
}
}
# 1 楼答案
控制器
服务
# 2 楼答案
正如hibernate documentation中所述: