我試圖從我的資料庫中洗掉所有超過 2 天的記錄,但我不斷收到這個不太有用的錯誤,所以我不知道該怎么做:
Some problem occured: org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
我的代碼如下所示:
在一個類中,我正在呼叫 testService 的 deleteOldRecords 方法:
// Delete records older than two days (takes current time and then removes 2 days from today's date (172 800 000 ms = 2 days)
testService.deleteOldRecords((ZonedDateTime.now().toInstant().toEpochMilli())-172_800_000);
這是該方法的實作:
@Override
public void deleteOldRecords(long timestamp) {
testDao.deleteOldRecordsCRUD(timestamp);
}
現在我正在嘗試呼叫 deleteOldRecordsCRUD,這是一個自定義查詢。這是方法:
@Repository
public interface TestItemDAO extends CrudRepository<TestItem, Long> {
//This will delete records older then two days!
@Modifying
@Query(value = "DELETE FROM TEST_TABLE tt WHERE tt.timestamp <= :timestamp", nativeQuery = true)
void deleteOldRecordsCRUD(@Param("timestamp") long timestamp);
}
我創建了表,其中有一些記錄,但這不起作用,也就是說,在 testDao.deleteOldRecordsCRUD(timestamp); 之后,記錄仍然存在于資料庫中;叫做。(因為那行出現的錯誤,但是由于日志不好,不知道哪里出了問題。)
我檢查了 SpringDocumentation,似乎我做對了一切。
uj5u.com熱心網友回復:
使用 Spring 包中的 @Transactional 注釋,例如@org.springframework.transaction.annotation.Transactional
在方法級別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311399.html
上一篇:構建規范(標準API)
