编程语言
首页 > 编程语言> > java-JPA / Spring Roo:当从持久性存储中删除实体时,是否有一个析构函数事件被调用?

java-JPA / Spring Roo:当从持久性存储中删除实体时,是否有一个析构函数事件被调用?

作者:互联网

我有一个Image实体(Spring Roo / JPA),它引用存储在文件系统中的图像.从持久性存储中删除Image实体时,我希望删除那些文件.

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

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

解决方法:

就在这里.通常,这些方法称为lifecycle callback methods.您需要使用post remove回调方法.可以将其定位到单独的类(然后通过@EntityListeners批注进行引用),或直接定位到您的实体:

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

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

标签:spring-roo,jpa,hibernate,spring,java
来源: https://codeday.me/bug/20191201/2080624.html