J'ai une classe qui contient un atttribute de type java.time.LocalDateTime. J'utilise des référentiels de données Spring. Ce que je veux accomplir est d'interroger les entités selon une date:Comment interroger LocalDateTime avec LocalDate?
@Service
public interface IRepository extends CrudRepository<MyClass, UUID> {
// ...
public void deleteByFecha(LocalDate fecha);
// ...
}
Mais cela ne fonctionne pas, comme une exception est levée:
org.springframework.dao.InvalidDataAccessApiUsageException: Valeur du paramètre [ 2016-10-05] ne correspond pas au type attendu [java.time.LocalDateTime (n/a)];
La question est de savoir comment puis-je interroger MyClass dans la base de données par fecha mais avec un LocalDate?
EDIT Juste au cas où quelqu'un fait face à la même question, je suis venu avec une solution: modifier la méthode du référentiel afin qu'il se présente comme suit:
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
// ...
@Service
public interface IRepository extends CrudRepository<MyClass, UUID> {
@Transactional
@Modifying
@Query("DELETE FROM MyClass mtc WHERE YEAR(mtc.fecha)=?1 AND MONTH(mtc.fecha)=?2 AND DAY(mtc.fecha)=?3")
public void deleteByFecha(Integer year, Integer month, Integer day);
}
Une autre solution possible à laquelle je n'ai pas pensé ... Merci – russellhoff
@russellhoff Si cela vous convient, acceptez-le. – Cepr0