1. 程式人生 > >spring-data-jpa @Query註解中delete語句報錯

spring-data-jpa @Query註解中delete語句報錯

專案中需要刪除掉表中的一些資料

@Query("delete from EngineerServices es where es.engineerId = ?1")
int deleteByEgId(String engineerId);

但是提示了錯誤

org.hibernate.hql.QueryExecutionRequestException: Not supported for DML operations

通過查閱相關的資料發現,對於執行update和delete語句需要新增@Modifying註解

@Modifying
@Query("delete from EngineerServices es where es.engineerId = ?1"
)
int deleteByEgId(String engineerId)
;

不過,新增之後執行又出現了另一個錯誤

nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query

發現缺少Transaction,於是新增@Transactional

@Modifying
@Transactional
@Query("delete from EngineerServices es where es.engineerId = ?1")
int deleteByEgId(String engineerId)
;

到此,這條delete語句終於可以成功的執行了。