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