如何在使用继承和与JPA

时间:2017-06-10 15:25:08

标签: java mysql hibernate jpa

我正在用spring实现一个简单的用户管理系统。为了实现更好的模型结构,我使用了继承。该系统基于三个类。保存一般信息的userdata类。继承和扩展用户类的parent类,最后是保存父对象的child类。

我要做的是通过删除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类继承自User并拥有一组Child:

@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;

希望有人能告诉我如何在我的系统中实现DELETE ON CASCADE

1 个答案:

答案 0 :(得分:1)

mappedBy = "parent1", cascade = CascadeType.ALL, orphanRemoval = true parent的{​​{1}}中的@OneToMany注释添加Set<Child> children