Java 删除JPA孤立文件删除
我有一个实体与我的文件系统链接,如下所示:Java 删除JPA孤立文件删除,java,hibernate,jpa-2.0,Java,Hibernate,Jpa 2.0,我有一个实体与我的文件系统链接,如下所示: @Entity 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
}
谢谢这就是我一直在寻找的。我在另一个服务中添加了此拦截器: