Bonjour,
J'essaye d’effacer des entités de ma base de données mais la requête JPQL ne semble rien faire, pas de suppression, mais pas d'exception non plus.
Pourtant, dans un test unitaire la requête s'exécute bien.
J'ai pensé à un problème de transaction, une exception plus loin dans le code annulerait le delete mais j'ai annoté la méthode TransactionAttributeType.REQUIRES_NEW et le problème persiste.
Pourtant le résultat du executeUpdate() est cohérent mais rien n'est reflété sur la base de données.
Voici le code :
J'utilise ce code dans GlassFish 4.1 qui utilise EclipseLink comme fournisseur JPA. Je précise que dans le code ci-dessus "linesRemoved" correspond au bon nombre de lignes qui auraient du être supprimées, mais dans la bdd, aucun changements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 @Override @TransactionAttribute(value=TransactionAttributeType.REQUIRES_NEW) public int deleteBetweenDate(Machine<?> machine, LocalDateTime startDate, LocalDateTime endDate) { Query q = em.createQuery( "DELETE FROM DAT9011FileData f " + "WHERE f.date BETWEEN :startDate AND :endDate " + "AND f.machine = :machine"); q.setParameter("startDate", startDate); q.setParameter("endDate", endDate); q.setParameter("machine", machine); int linesRemoved = q.executeUpdate(); em.flush(); return linesRemoved; }
Quelqu'un aurait une idée ou une piste ?
Merci d'avance!
Partager