我正在開發一個彈簧應用程式。我們有一個特定的要求,當我們得到一個特定的事件時,我們想在資料庫中查找它。如果我們在資料庫中找到記錄,那么我們將其從資料庫中洗掉,使用詳細資訊創建另一個事件并觸發它。
現在我擔心的是:
- 我不想使用兩個不同的呼叫,一個是查找記錄,另一個是洗掉記錄。
- 我正在尋找一種方法,我們可以使用自定義查詢洗掉記錄并同時獲取已洗掉的記錄。
- 這節省了對 DB 的兩個不同的呼叫,一個用于獲取,另一個用于洗掉。
到目前為止我在互聯網上發現的:
- 我們可以使用名為 的注解來使用自定義查詢進行洗掉
@Modifying。但這不允許我們將物件作為一個整體回傳。您只能回傳void或int從使用@Modifying. - 我們有
removeBy或deleteBy命名了 spring 提供的查詢。但這也int只回傳而不是回傳正在洗掉的完整記錄物件。
我特別在尋找類似的東西:
@Transactional
FulfilmentAcknowledgement deleteByEntityIdAndItemIdAndFulfilmentIdAndType(@Param(value = "entityId") String entityId, @Param(value = "itemId") String itemId,
@Param(value = "fulfilmentId") Long fulfilmentId, @Param(value = "type") String type);
是否可以從資料庫中獲取已洗掉的記錄并進行上述呼叫?
uj5u.com熱心網友回復:
我找不到一種方法來檢索通過自定義 @Query 或命名查詢洗掉的實際物件。回傳被洗掉物件的唯一方法是deleteByIdor removeById,但為此,我們需要被洗掉記錄的主鍵。我們并不總是可以擁有該主鍵。
到目前為止,我發現這樣做的最好方法是:
- 使用自定義查詢從資料庫中獲取記錄。
- 通過呼叫從資料庫中洗掉記錄
deleteById。雖然,您現在可以使用任何方法洗掉它,因為我們不需要回傳的物件deleteById。我仍然選擇deleteById,因為我的資料庫是在主鍵上建立索引的,使用它洗掉它會更快。 - 我們可以使用reactor或executor 服務來異步和并行地運行行程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/490409.html
上一篇:JPAsave()不更新現有行
