Spring data jpa deleteBy requête ne fonctionne pas
Je suis en train de créer un personnalisé deleteBy méthode de requête dans mon référentiel.
Il semble qu'au lieu de supprimer, mise en veille prolongée est prise d'une instruction select.
public interface ContactRepository extends JpaRepository<Contact, Integer> {
Integer deleteByEmailAddress(String emailAddress);
//and this one works
Contact findContactByName(String name);
}
et voici ce que Hibernate est en train de faire:
Mise en veille prolongée: sélectionnez contact0_.id id1_2_, contact0_.emailAddress comme >emailAdd2_2_, contact0_.nom de name3_2_ de Contact contact0_ où >contact0_.emailAddress=?
Ce qui me manque? Dois-je faire une configuration spéciale afin de faire supprimer le travail?
Vous devez vous connecter pour publier un commentaire.
Est la suppression ne fonctionne pas ou ne fonctionne pas comme la façon dont vous vous attendez? Typiquement, une entité doit être réussi avant elle peut être supprimée, de sorte qu'un fournisseur JPA (hibernate dans votre cas) se charge (la requête que vous voyez) l'entité d'abord, puis de question de le supprimer.
Si vous êtes seulement de voir la requête, mais pas de le supprimer, puis certaines possibilités sont:
deleteByEmailAddress
est transactionnelleRemarque: vous pouvez éviter de le sélectionner lors de la suppression d'une entité à l'aide d'une modification de la requête delete, exemple ci-dessous:
// NOTE: you have return void
- je vais tout essayé mais n'y pense pas, c'était la raison dans mon cas!Dans les versions modernes de Spring Data JPA (>=1.7.x) requête de dérivation pour les supprimer et de les compter opérations est accessible.
Printemps de Données: "supprimer" est pris en charge?
Essayez de déplacer la suppression de la Requête d'appel à une classe de service exclusif pour elle:
et le mettre en oeuvre DeleteServiceImpl.java par exemple