J'ai un CrudRepository et une méthode pour supprimer les données:Scheduler, CrudRepository et TransactionRequiredException
public interface SampleRepository extends PagingAndSortingRepository<Sample, String> {
@Modifying
@Transactional
@Query("delete from Sample where creationTimestamp <= ?1")
public void deleteOutdatedData(Instant expirationTimestamp);
}
Il fonctionne si j'utilise un contrôleur de repos:
@RequestMapping(value = "/delele", method = RequestMethod.DELETE)
public void deleteOldData(@RequestParam(value = "date") String date) {
sampleRepository.deleteOutdatedData(Instant.parse(date));
}
Je voudrais mettre en œuvre un planificateur pour supprimer les données obsolètes. Par exemple:
@Scheduled(fixedDelayString = "${clean-processing-delay}")
public void cleanOutdatedData() {
Instant instant = Instant.now().minusMillis(expirationInterval);
sampleRepository.deleteOutdatedData(instant);
}
Le planificateur fonctionne au bon moment, mais j'Intercepter une exception:
exception imbriquée est org.springframework.dao.InvalidDataAccessApiUsageException: exécution une mise à jour/supprimer requête ; exception imbriquée est javax.persistence.TransactionRequiredException: L'exécution d'une mise à jour /supprimer requête
Où suis-je trompé?
Avez-vous lu [ce] (https://github.com/spring-projects/spring-boot/issues/3576# émissionecomment-295983737)? – Cepr0
Merci, je vais essayer. – Alexander