la mise à jour de la valeur booléenne dans spring data jpa à l'aide de @Requête, avec hibernate
J'ai de printemps de données et mise en veille prolongée configuré et en cours d'exécution. Je peux enregistrer des enregistrements à l'aide de printemps de données, mais pour une raison que je ne suis pas en mesure d'exécuter la requête qui sera mise à jour tous les champs Booléens dans un tableau.
J'ai essayé ceci:
@Query("update Content v set v.published = false where v.division = :division and v.section = :section")
void unPublishContent(@Param("division") String division,
@Param("section") String section);
J'ai aussi essayé ceci:
@Query("update Content v set v.published = 0 where v.division = :division and v.section = :section")
void unPublishContent(@Param("division") String division,
@Param("section") String section);
Paramètres de division et de section sont à venir vrai, mais pas de changement sur la table.
p.s. Je suis également en utilisant la base de données mysql.
Vous devez vous connecter pour publier un commentaire.
Je suis en utilisant le Printemps 3.1 et Spring JPA Données. J'ai eu un problème similaire. J'ai été d'obtenir en permanence une erreur lors de la tentative de mise à jour de plusieurs enregistrements dans la requête 1.
Si, j'ai eu quelque chose comme cela.
Erreur:
Ainsi, après une recherche sur google pour un certain temps, j'ai découvert que vous aviez à ajouter @la Modification.
Mais ensuite, j'ai été d'obtenir l'erreur suivante:
Donc, j'ai pensé que mon problème était maintenant un problème de transaction et je suis retourné à google de le recherche et a découvert que vous devez ajouter @Transactional maintenant. Il semble que @la Modification exige aussi @Transactionnelle.
mais j'ai eu l'erreur suivante:
De nouveau j'ai googlé pour un certain temps et est venu à la conclusion que ma configuration était mal, et il s'est avéré être vrai. J'ai été absent du xml configs.
C'était un long voyage, mais j'ai enfin réussi à le faire fonctionner. J'espère que cela aidera quelqu'un, en essayant de "pay it forward", comme beaucoup d'autres m'ont aidé avec leur de merveilleux blogs, des réponses et des commentaires.
@Repository interface IContactRepository extends PagingAndSortingRepository<Contact, Long> { @Modifying @Query("delete from Contact c where c.circle.id = :circleId") void deleteAllMembersOf(@Param("circleId") Long circleId); }
Pour exécuter la modification des requêtes vous avez besoin d'annoter la méthode avec un supplément de
@Modifying
comme indiqué dans le la documentation de référence comme ceci:readOnly
- du moins pas directement.readOnly
est sur les transactions,@Modifying
est un appel à laEntityManager
. Bien sûr, il n'est pas logique d'essayer d'exécuter une modification de la méthode en lecture seule transaction.Pour moi aussi, il a travaillé avec les annotations suivantes:
Pour moi, il a travaillé avec les annotations suivantes :
De travail avec le Printemps, 5, @Transactional annotation est toujours nécessaire.