2017-06-10 57 views
1

我正在實現一個簡單的用戶管理系統與春天。爲了實現更好的模型結構,我使用繼承。該系統建立在三個班級上。持有一般信息的userdata類。繼承和擴展用戶類的類,最後是持有父對象的類。如何級聯刪除時使用繼承和ManyToOne與JPA的關係

我想要做的是通過刪除parent對象來刪除所有的孩子(被稱爲父母)刪除。

我已經能夠通過我的視圖在mySQL-DB上保存/刪除對象,因此存儲庫/服務/控制器似乎可以工作。

爲了讓您更好地瞭解我的情況,我在下面放了一些代碼。

User類別:

@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
public class UserData implements Persistable<String> { 

private static final long serialVersionUID = 1L; 

@Id 
@NotNull 
private String username; 
@NotNull 
private String password; 
@NotNull 
private String firstName; 
@NotNull 
private String lastName; 

Parent類從用戶繼承和保存一組兒童:

@Entity 
public class Parent extends UserData { 

private static final long serialVersionUID = 1L; 

private String imgName; 
@OneToMany(fetch = FetchType.EAGER) 
@ElementCollection 
private Set<Child> children; 

Child類,其保持父對象

@Entity 
@Transactional 
public class Child implements Persistable<Long> { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Long id; 
@NotNull 
private String firstName; 
@NotNull 
private String lastName; 
@NotNull 
private String birthday; 
@NotNull 
@ManyToOne(optional = false) 
private Parent parent1; 

希望任何人都可以告訴我我是如何實現的在我的系統中有e DELETE ON CASCADE

+0

你可以嘗試在'@ OneToMany'註釋中添加'cascade = {CascadeType.PERSIST}'嗎? –

+0

@DarshanMehta我得到'class org.springframework.dao.DataIntegrityViolationException' ...也許我需要向'ManyToOne'添加一些東西? – SteveOhio

+0

是的,你可以嘗試在兩者中添加'CascadeType.PERSIST'嗎? –

回答

1

mappedBy = "parent1", cascade = CascadeType.ALL, orphanRemoval = true添加到@OneToMany註釋parent作者:Set<Child> children作品。