【发布时间】:2020-04-29 02:29:09
【问题描述】:
我目前正在做一个 Springboot 项目,我遇到了一个问题:
我想在每个 Child 被删除之前触发一个方法,我的代码如下。
我有一个 Parent 类和一个 Child 一个遵循以下配置:
@Entity
public class Parent implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "parent")
@OnDelete(action = OnDeleteAction.CASCADE)
private List<Child> children = new ArrayList<>();
}
@Entity
public class Child implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "child_id", nullable = false)
@Getter(onMethod = @__({@JsonIgnore}))
private Parent parent;
@PreRemove
void test() {
System.out.println("Before removing");
}
}
我想要什么:
当 Parent 对象被删除时,Anottation @OnDelete(action = OnDeleteAction.CASCADE) 将被触发,并且每个相关的 Child 对象也将被删除,但我想在它发生之前做一些逻辑。
发生了什么:
当一个 Parent 对象被删除时,Anottation @OnDelete(action = OnDeleteAction.CASCADE) 被触发并且所有相关的 Child 对象都被删除,但是带有@PreRemove 的方法不会被触发。
我需要添加更多配置吗?
【问题讨论】:
标签: hibernate spring-boot jpa spring-data-jpa spring-data