3

我有一个引用存储在文件系统上的图像的图像实体(Spring Roo / JPA)。当从持久存储中删除图像实体时,我很想删除这些文件。

我可以在每个 Image 实体上编写一个手动remove()方法,使其删除自身及其引用的文件,但这仅在使用该方法手动删除图像时才有效。显然,当删除拥有实体或通过调用它删除图像时级联删除图像时,它不会触发entityManager.remove()

从数据库中删除实体时是否调用了任何类型的方法或事件?

4

1 回答 1

3

就在这里。通常,这些方法称为生命周期回调方法。在您的情况下,您需要删除后回调方法。这可以定位到单独的类(然后通过 @EntityListeners 注释引用),或者直接定位到您的实体:

@PostRemove
protected void postRemoveOperations() {
    //remove images here
} 

或者根据细节,@PreRemove可能更有用。

于 2012-04-25T17:54:21.717 回答