2017-09-12 52 views
0

我想在彈簧數據休息中使用以下功能。保存或合併修補程序實體

如果我發佈到集合資源終點,服務器應檢查對象是否存在。如果它已經存在,它應該執行與在項目資源上合併補丁相同的功能。如果對象不存在,它應該創建它。

這是否可以在春季數據休息中實現。如果是的話那麼如何?

回答

0

如果在您的用例中可能,您可能想使用PUT而不是POST,因爲PUT應該按照您的預期工作。

與POST

解決方案可以實現與Spring Data REST Event handlers期望的行爲。

只需創建一個Handler方法,它接受您的實體並使用@HandleBeforeCreate對其進行註釋。在這種方法中,您可以實現您的行爲,即檢查對象是否存在並手動更新它,或者什麼也不做,並讓Spring Data REST處理實體創建。

@RepositoryEventHandler 
public class EntityEventHandler { 

    @Autowired 
    private EntityService entityService; 

    @HandleBeforeCreate 
    public void handleEntityCreate(Entity e) { 
     if (entityService.exists(e)) { 
     entityService.update(e); 
     } 
    } 
} 

編輯: 我才意識到,你還需要你更新後停止創建事件。你可以嘗試拋出一個自定義異常並處理它返回200和更新的實體。

相關問題