[英]Can I add 'ON DELETE CASCADE' to tables managed by Hibernate?
[英]Hibernate 5.2 delete on cascade on my tables postgres
我有兩個相互依賴的類。 我想進行級聯刪除。 問題我有以下錯誤:
無法執行語句; SQL [n / a]; 約束[fk5o18odcs53r4t69hbgf35haj3]; 嵌套的異常是org.hibernate.exception.ConstraintViolationException:無法執行語句
public class Workspace {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false)
private Long id;
@Column(name = "name", nullable = false, unique = true)
private String name;
private String description;
@CreationTimestamp
@Column(name = "created_at")
private Date createdAt;
@UpdateTimestamp
@Column(name = "updated_at")
private Date updatedAt;
@OneToMany( fetch = FetchType.LAZY,cascade = CascadeType.REMOVE,orphanRemoval = true)
private List<Project> projects;
public void setId(Long id) {
this.id = id;
}
public List<Project> getProjects() {
return projects;
}
public void setProjects(List<Project> projects) {
this.projects = projects;
}
}
@Entity
@Table(name = "project")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private Workspace workspace;
private String description;
@CreationTimestamp
@Column(name = "created_at")
private Date createdAt;
@UpdateTimestamp
@Column(name = "updated_at")
private Date updatedAt;
問題是用我的JPA創建的表沒有在刪除規則中定義級聯類型。 我是否必須直接通過sql定義約束類型? JPA Hibernate可以不定義這些約束嗎?
您需要為Workspace類OneToMany關系指定mapBy參數。
@OneToMany( fetch = FetchType.LAZY,cascade = CascadeType.REMOVE,orphanRemoval = true, mappedBy = "workspace")
private List<Project> projects;
之后,您可以刪除工作區,所有項目也將被刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.