Spring data JPA findFirst,findTop ne marche pas
Selon section 3.4.5 du Ressort des Données JPA documentation, les résultats d'une requête méthode peut être limité en utilisant le mot-clé first
et top
.
J'ai écrit mon code comme ceci:
SysPrefixName findFirstByTableName(String tableName);
Cependant, j'ai cette erreur quand je lance le code:
résultat renvoie plus d'un des éléments; nested exception javax.la persistance.NonUniqueResultException: résultat renvoie plus d'un des éléments
Toute aide sur la résolution de ce sera apprécié.
- Que fait votre code ressemble?
- SysPrefixName findFirstByTableName(String nom de la table);List<SysPrefixName> findFirst2ByTableName(String nom de la table); il fonctionne dans la démo, mais dans mon application de la méthode de générer de fausses requêtes sql. ils sont tous les traduire par "sélection de .."sans" de haut(1),la partie supérieure(2)'. donc, je rencontre une exception
- Ce qui Ressort des Données de la version utilisez-vous?
- Spring Data JPA 1.6.0.LIBÉRATION
Vous devez vous connecter pour publier un commentaire.
Le soutien pour ces mots-clés a été introduit au Printemps de Données JPA 1.7. Voir ce billet pour plus de détails.
Cette une a fonctionné pour moi:
Si vous êtes de printemps dans la construction de la source de données, ajouter une propriété :
printemps.jpa.les propriétés.mise en veille prolongée.le dialecte = org.mise en veille prolongée.le dialecte.SQLServer2012Dialect
si vous utilisez une source de données personnalisée :
Vous devez ajouter la propriété en tant que propriétés de la carte dans votre source de données bean:
Si vous ne spécifiez pas un nombre (par exemple, findFirst10ByTableName), alors un résultat de 1 est prévu. Mais depuis que votre requête a retourné plusieurs résultats, alors vous obtenez le message d'erreur que votre retour objet ne peut pas être une Collection/Liste d'objet qui peut être mappé à partir de retourner ensemble de résultats.
findFirst
etfindTop
va automatiquement filtrer les résultats de la recherche pour l'un au-dessus de l'ensemble de résultats. Télécharger mon exemple d'application et exécuter les tests unitaires de voir ce travail.findFirst
conduira à une exception si elle fait des rencontres multiples dossiers est incorrect. J'ai créé un échantillon de démontrer spécifiquement cette conclusion erronée.