Comment mettre en œuvre uniquement une méthode spécifique de CrudRepository au spring?

J’utilise CrudRepository de spring-data-jpa pour définir simplement l’interface d’une entité, puis utiliser toutes les méthodes standard crud sans avoir à fournir explicitement une implémentation, par exemple:

 public interface UserRepo extends CrudRepository { } 

Bien que maintenant je veuille remplacer uniquement la méthode save() dans mon implémentation personnalisée. Comment pourrais-je y parvenir? En effet, si UserRepo l’interface UserRepo , je devrais implémenter toutes les autres méthodes CRUD héritées de l’interface CrudRepository .

Est-ce que je ne peux pas écrire ma propre implémentation qui a toutes les méthodes CRUD mais en redéfinissant une sans avoir à implémenter toutes les autres moi-même?

Vous pouvez faire quelque chose d’ assez similaire , ce qui, je pense, permettra d’ obtenir le résultat que vous recherchez.

ÉTAPES NÉCESSAIRES:

1) UserRepo étendra maintenant 2 interfaces:

 public interface UserRepo extends CrudRepository, UserCustomMethods{ } 

2) Créez une nouvelle interface nommée UserCustomMethods (vous pouvez choisir le nom et changer à la fois ici et à l’étape 1)

 public interface UserCustomMethods{ public void mySave(User... users); } 

3) créez une nouvelle classe nommée UserRepoImpl (ici le nom compte et il devrait s’agir de RepositoryName Impl , car si vous l’appelez autrement, vous devrez ajuster la configuration Java / XML en conséquence). cette classe ne doit implémenter que l’interface CUSTOM que vous avez créée.

CONSEIL: vous pouvez injecter entitymanager dans cette classe pour vos requêtes.

 public class UserRepoImpl implements UserCustomMethods{ //This is my tip, but not a must... @PersistenceContext private EntityManager em; public void mySave(User... users){ //do what you need here } } 

4) Injectez UserRepo partout où vous en avez besoin et profitez à la fois de CRUD et de vos méthodes personnalisées 🙂