在 JPA orphan-delete 上删除文件
Remove a file on JPA orphan-delete
我有一个与我的文件系统链接的实体,如下所示:
@Entity
public class MyDocument {
@Id
private Long documentId;
private String fileName;
private String filePath;
//Then a lot of other fields, getters and setters
}
如果我从我的数据库中删除一个文档(例如使用孤立删除),我想在异步方法中删除相应的文件。
有什么建议吗?有没有办法拦截 JPA 删除操作?
您应该查找实体的事件生命周期,特别是 preRemove。
注解配置一样简单
@PreRemove
public void deleteFile(){
//your async logic
}
编辑:您也可以像这样创建一个单独的服务:
@Service
public class FilerService {
@PostRemove
@Async
void deleteFile(MyDocument document) {
Files.deleteIfExists(Paths.get(document.getFilePath()));
}
}
并绑定@EntityListeners
@Entity
@EntityListeners(FilerService.class)
public class MyDocument {
@Id
private Long documentId;
private String fileName;
private String filePath;
//Then a lot of other fields, getters and setters
}
我有一个与我的文件系统链接的实体,如下所示:
@Entity
public class MyDocument {
@Id
private Long documentId;
private String fileName;
private String filePath;
//Then a lot of other fields, getters and setters
}
如果我从我的数据库中删除一个文档(例如使用孤立删除),我想在异步方法中删除相应的文件。
有什么建议吗?有没有办法拦截 JPA 删除操作?
您应该查找实体的事件生命周期,特别是 preRemove。
注解配置一样简单
@PreRemove
public void deleteFile(){
//your async logic
}
编辑:您也可以像这样创建一个单独的服务:
@Service
public class FilerService {
@PostRemove
@Async
void deleteFile(MyDocument document) {
Files.deleteIfExists(Paths.get(document.getFilePath()));
}
}
并绑定@EntityListeners
@Entity
@EntityListeners(FilerService.class)
public class MyDocument {
@Id
private Long documentId;
private String fileName;
private String filePath;
//Then a lot of other fields, getters and setters
}