Spring JPA Requête renvoie la valeur Null au lieu de la Liste
J'ai un @Entity Video
avoir un un-à-plusieurs relation avec un List<Tag> tags
comme l'un de ses champs. J'utilise la suite @Repository
à l'aide de Printemps de Données pour obtenir les plus populaires tags:
@Repository
public interface TagRepository extends CrudRepository<Tag, Integer>{
@Query("SELECT t FROM Tag t WHERE (SELECT SUM(v.views) FROM Video v WHERE t MEMBER OF v.tags) > 0")
public List<Tag> findMostViewedTags(int maxTags);
}
La Requête est traitée et considérée comme valide par Printemps, j'ai testé le générés SQL vs ma base de données en local et qu'il a renvoyé 2 Tags. Dans mon Code, cependant, je reçois la valeur Null lorsque j'appelle la méthode findMostViewedTags(100).
La Requête de recherche de stratégie par défaut est "CREATE_IF_NOT_FOUND".
- Si il n'y a pas des résultats trouvés, si la méthode renvoie une liste vide ou Null? Mon comportement désiré est de recevoir une liste vide.
- Pourquoi la méthode de retour d'appel de
Null
au lieu d'unList<Tag>
avec la taille() 2?
maxTags
n'est pas utilisé, ou qui n'est pas la requête vous sont effectivement en cours d'exécution.OriginalL'auteur Vjeetje | 2016-01-27
Vous devez vous connecter pour publier un commentaire.
List<Object>
est la valeur de retour de la méthode dans l'interface définie, la méthode ne devrait jamais retournerNull
.est-il spécifié nulle part dans la documentation qu'elle retourne une liste vide si aucun résultat n'est trouvé? Je ne peux pas le trouver
Ici vous allez.. docs.printemps.io/printemps-données/jpa/docs/current/reference/html/...
Repository methods returning collections, collection alternatives, wrappers, and streams are guaranteed never to return null but rather the corresponding empty representation
OriginalL'auteur Vjeetje
J'ai vécu le même problème. La cause est que j'ai été en utilisant Mockito et n'ont pas correctement se moquaient de données avec
when()
.OriginalL'auteur user1747134