簡體   English   中英

如何使用 JPA @Query 和 @Param Annotations 執行軟刪除?

[英]How to perform soft delete using JPA @Query and @Param Annotations?

我正在嘗試使用 JPA @Query Annotation 更新數據庫表中的現有行。 我想通過將 Deleted_Flag 從 NO 更新為 YES 來執行軟刪除。

這是我的代碼片段:

@Modifying
@Query("UPDATE TBL_NAME SET DELETE_FLAG = 'YES' WHERE DELETE_FLAG = 'NO' 
AND FILE_NM = :FILE_NM")
public void softDelete(@Param("FILE_NM") String fileName)
{
}

我沒有收到任何錯誤,但數據庫中的數據沒有更新。

實際結果必須像所有現有行都必須使用 DELETE_FLAG 更新為 YES。

也許在使用“更新”查詢時使用主鍵列會與其他“位置”要求一起使用

確保使用活動事務調用存儲庫方法。

實際上,在我的上一個項目中,我使用以下慣用法更新標志:

實體使用Hibernetish進行注釋:

@Entity
@Table(name="myTable")
@Where(clause = "is_deleted = 0")
@Cacheable
public class MyTable {}

實際更新附帶一個簡單的查找方法:

   @Transactional
    public void deleteById(@NonNull final Long themeId) {
        themeRepository.findById(themeId).orElseThrow(() -> new EntityNotFoundException(THEME_NOT_FOUND + themeId))
                .setDeleted(true);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM