2017-10-11 3 views
-1

を孤児-削除JPA上のファイルを削除します。私は実体がこのように私のファイルシステムにリンクされている

@Entity 
public class MyDocument { 
    @Id 
    private Long documentId; 
    private String fileName; 
    private String filePath; 
    //Then a lot of other fields, getters and setters 
} 

私は私のデータベースから文書を削除した場合(例えば孤児-削除して)、私は削除したいですAsyncメソッドの対応するファイル。

提案がありますか? JPAの削除アクションを傍受する方法はありますか?

答えて

1

エンティティのイベントライフサイクル、特に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 
} 
+0

おかげでそれをバインドします!それは私が探していたものです。このインターセプタを別のサービスに追加しました:http://www.objectdb.com/java/jpa/persistence/event#Listeners_and_External_Callback_Methods_ –

関連する問題