は、私がCrudRepositoryやデータを削除する方法があります:スケジューラ、CrudRepositoryとTransactionRequiredException
@RequestMapping(value = "/delele", method = RequestMethod.DELETE)
public void deleteOldData(@RequestParam(value = "date") String date) {
sampleRepository.deleteOutdatedData(Instant.parse(date));
}
私は、スケジューラを実装したいと思います:
public interface SampleRepository extends PagingAndSortingRepository<Sample, String> {
@Modifying
@Transactional
@Query("delete from Sample where creationTimestamp <= ?1")
public void deleteOutdatedData(Instant expirationTimestamp);
}
をそれは私が残りのコントローラを使用している場合は動作します古いデータを削除します。たとえば :
入れ子の例外 org.springframework.dao.InvalidDataAccessApiUsageExceptionです:クエリを削除/ アップデートを実行
@Scheduled(fixedDelayString = "${clean-processing-delay}") public void cleanOutdatedData() { Instant instant = Instant.now().minusMillis(expirationInterval); sampleRepository.deleteOutdatedData(instant); }
例外は、スケジューラは、適切なタイミングで動作しますが、私はキャッチ;実行 更新/削除クエリ私は間違っています
:ネストされた例外が javax.persistence.TransactionRequiredExceptionですか?
あなたは[この](https://github.com/spring-projects/spring-boot/issues/3576#を読みました発行番号-295983737)? – Cepr0
ありがとう、私はそれを試してみます。 – Alexander