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和更新的實體。