Lorsqu'il n'y a pas de lignes, query.list() et criteria.list() renvoient une liste vide au lieu d'une valeur nulle. Quelle est la raison derrière cela?hibernate query.list() retourne la liste vide au lieu de la valeur
Répondre
La raison est de ne pas forcer les contrôles nuls dans le code client, en cohérence avec Effective Java 2nd Edition, article 43: Retour des tableaux ou des collections vides, non NULLS.
Ceci rend le code client plus simple et moins sujette aux erreurs (et probablement aussi l'implémentation de la méthode).
L'idiome null-retour est probablement un vestige de langage de programmation C, dans lequel les longueurs de réseau sont renvoyés séparément des matrices réelles. En C, il n'y a pas d'avantage pour allouer un tableau si zéro est retourné comme longueur.
hmm ... mais même si cela empêche les vérifications nuls, nous devons encore vérifier la taille de la liste ... non? et aussi comme une bonne pratique, nous vérifie toujours pour null aussi (au moins dans notre équipe). – Reddy
C'est le point - si vous êtes sûr (sur la base des promesses d'une API) qu'une valeur ne peut pas être nulle, alors vous ne vérifiez pas null. Et non, vous n'avez pas besoin de vérifier la taille. Lorsque vous itérez la collection, elle ignore l'itération. – Bozho
okay ... je l'ai. Si c'est un client nul et en tant que client si je n'ai pas vérifié, NPE peut faire tomber mon application. Mais si c'est une collection vide, il faudrait simplement passer la logique et continuer (comme nous vérifions généralement la taille de toute façon). Merci Peter et Bozho. – Reddy
Il est cohérent: une liste est retournée avec tous les résultats, qu'il y en ait ou non.
- 1. PackageManager.getInstalledPackages() retourne la liste vide
- 2. SQL Server xQuery retourne NULL au lieu de vide
- 3. requête SQL retourne une valeur au lieu de comparer contre
- 4. Comment définir la valeur par défaut de la chaîne vide TextBox au lieu de null
- 5. Utilisez la valeur au lieu de l'afficher
- 6. jHtmlArea retourne la chaîne vide
- 7. sélectionnez la valeur vide initiale
- 8. Sharepoint wsdl ne retourne pas le fichier WSDL, retourne la page normale au lieu
- 9. Hibernate lance BigDecimal au lieu de Integer
- 10. pourquoi Geocoder.getFromLocationName (...) retourne une liste vide?
- 11. Mon formencode.variabledecode retourne une liste vide - Pylônes
- 12. obtenir la valeur maximale en php (au lieu de mysql)
- 13. dijit.form.Combobox show label Au lieu de la valeur
- 14. Liste déroulante ASP.NET MVC 2 Au lieu de la grille de la liste principale
- 15. Selenium - getBodyText() Retourne la chaîne vide
- 16. Trier par nom d'affichage au lieu de la valeur réelle
- 17. Montrer emplacement mémoire au lieu de la valeur dans Rails
- 18. DataContractJsonSerializer produit la liste des hash au lieu de hachage
- 19. python, convertir un dictionnaire en une liste triée par valeur au lieu de la clé
- 20. Pourquoi ma liaison de données voit-elle la valeur réelle au lieu de la valeur contrainte?
- 21. hibernate @onetomany mise à jour de la relation au lieu de l'insérer pendant la sauvegarde
- 22. retourne contrôleur mvc s données html 'au lieu de vue
- 23. Liste de répertoires au lieu de l'application
- 24. Comment puis-je obtenir la valeur affichée au lieu de la valeur réelle dans Excel?
- 25. Afficher le texte au-dessus de la liste si la liste est vide? (SharePoint 2007)
- 26. recherche Registre WiX retourne C: \ au lieu de chemin prévu
- 27. Site Web retourne 302 au lieu de 200
- 28. Question de fonctionnement de la liste Hibernate
- 29. La requête MySQL définit le champ à 0 au lieu de la chaîne vide
- 30. Faire une requête Count() retourner 0 au lieu de vide
pourquoi voulez-vous null? Je comprends quand vous demandez un résultat unique - pas trouvé aurait du sens à retourner null. Mais list() devrait toujours retourner une liste vide! Quelle est la signification d'une liste nulle? – ACV