Spring Data JPA prend en charge le comptage des entités à l'aide de spécifications. Mais y a-t-il un moyen de compter les entités à l'aide de la résolution de noms de méthode? Disons que je veux une méthode countByName
pour compter les entités avec un nom spécifique, tout comme une méthode findByName
pour récupérer toutes les entités avec un nom spécifique.
java
spring
spring-data-jpa
YaoFeng
la source
la source
Réponses:
Depuis Spring Data 1.7.1.RELEASE, vous pouvez le faire de deux manières différentes,
1) La nouvelle méthode , utilisant la dérivation de requête pour les requêtes de comptage et de suppression. Lisez ceci , (Exemple 5). Exemple,
2) L' ancienne méthode , en utilisant l'annotation @Query.
Exemple,
ou en utilisant l'annotation @Param également,
Vérifiez également cette réponse .
la source
Tant que vous n'utilisez pas la version 1.4, vous pouvez utiliser une annotation explicite:
exemple:
la source
long
place deint
, sinon vous obtiendrez une ClassCastException sans aucun indiceJpaRepository étend également QueryByExampleExecutor. Vous n'avez donc même pas besoin de définir des méthodes personnalisées sur votre interface:
Et puis interrogez comme:
la source
int age
sera inclus mais pas défini, maisInteger age
sera exclu de l'échantillon (au moins dans Eclipselink)Cette fonctionnalité a été ajoutée dans la version 1.4 M1
la source
Exemple de travail
Appel depuis la couche DAO
la source
Selon Abel, après la version 1.4 (testée en version 1.4.3.RELEASE), il est possible de faire de cette façon:
public long countByName (nom de chaîne);
la source
Apparemment, il est implémenté maintenant DATAJPA-231
la source
Merci à tous! Maintenant c'est du travail. DATAJPA-231
Ce serait bien s'il était possible de créer un compte… Par… des méthodes comme find… Par un. Exemple:
la source
Selon le problème DATAJPA-231, la fonctionnalité n'est pas encore implémentée.
la source
Je ne travaille avec lui que depuis quelques semaines, mais je ne pense pas que cela soit strictement possible, mais vous devriez pouvoir obtenir le même effet avec un peu plus d'effort; écrivez simplement la requête vous-même et annotez le nom de la méthode. Ce n'est probablement pas beaucoup plus simple que d'écrire la méthode vous-même, mais c'est plus propre à mon avis.
Edit: c'est désormais possible selon DATAJPA-231
la source
la source
Si quelqu'un souhaite obtenir le décompte basé sur plusieurs conditions, voici un exemple de requête personnalisée
la source