139 votes

Si javax.persistence.Query.getResultList() peut retourner null ?

Et dans l’affirmative, dans quelles circonstances ?

Javadoc et JPA spec ne dit rien.

84voto

Arthur Ronald Points 19001

Tu as raison. Spécification JPA ne dit rien à ce sujet. Mais Java persistance avec Hibernate, 2e édition, dit :

Si le résultat de la requête est vide, une valeur null est retournée

Mise en veille prolongée de retour null JPA mise en œuvre (entité gestionnaire) lorsque vous appelez query.getResultList() sans résultat.

MISE À JOUR

Comme souligné par certains utilisateurs, il semble qu’une nouvelle version d’Hibernate retourne une liste vide à la place.

25voto

djna Points 34761

Si les spécifications dit qu'il n'arrive pas, auriez-vous confiance en eux? Étant donné que votre code pourrait exécuter sur différentes implémentations JPA, feriez-vous confiance à chaque maître d'œuvre pour l'obtenir?

N'importe quoi, je code avec précaution et vérifier la valeur null.

Maintenant la grande question: devrions-nous traiter de "nul" et une Liste vide comme un synonyme? C'est là que les spécifications devraient nous aider, et ne pas.

Ma conjecture est qu'un retour null (si, effectivement, il pourrait arriver) serait l'équivalent de "je n'ai pas compris la requête" et vide de liste serait "oui, a compris la requête, mais il n'y avait pas de dossier".

Peut-être ont un chemin d'accès du code (probablement une exception) qui traite de unparsable requêtes, j'aurais tendance à diriger un retour null en bas de ce chemin.

14voto

Andrew Simons Points 91

Contrairement aux postes d’Arthur, quand j’ai couru en fait une requête qui ne correspondait à aucune entité j’ai obtenu une liste vide, non nulle. C’est en utilisant Hibernate et c’est ce que je considère le comportement correct : une liste vide est la bonne réponse lorsque vous demandez une collection d’entités et il n’ya pas tout.

1voto

Al Scherer Points 21

Bien sûr, si vous testez le jeu de résultats avec CollectionUtils.isNotEmpty de Jakarta, vous êtes couvert de toute façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X