Cuando no hay filas, tanto query.list() como criteria.list() devuelven la lista vacía en lugar de un valor nulo. ¿Cuál es la razón detrás de esto?el método hibernate query.list() devuelve la lista vacía en lugar del valor nulo
Respuesta
La razón no es forzar comprobaciones nulas en el código del cliente, en coherencia con Effective Java 2nd Edition, artículo 43: Devolver matrices vacías o colecciones, no nulos.
Esto hace que el código del cliente sea más simple y menos propenso a errores (y muy probablemente la implementación del método también).
El idioma null-retorno es probable un vestigio del lenguaje de programación C, en que longitudes de matriz se devuelven por separado de las matrices reales. En C, no hay ninguna ventaja de para asignar una matriz si se devuelve cero como longitud.
hmm ... pero incluso como está impidiendo los controles nulos, todavía tenemos que verificar el tamaño de la lista ... ¿no? y también como una buena práctica, siempre buscamos null también (al menos en nuestro equipo). – Reddy
Ese es el punto: si está seguro (de acuerdo con las promesas de una API) de que un valor no puede ser nulo, entonces no busca nulo. Y no, no necesitas verificar el tamaño. Cuando itere la colección, saltará la iteración. – Bozho
bien ... lo tengo. Si es un nulo y como cliente si no lo verifiqué, NPE puede cancelar mi aplicación. Pero si se trata de una colección vacía, simplemente omitiría la lógica y continuaría (ya que generalmente verificamos el tamaño de todos modos). Gracias Peter y Bozho. – Reddy
Es consistente: se devuelve una lista con todos los resultados, ya sea que los haya, o no.
- 1. Clipboard.GetText devuelve un valor nulo (cadena vacía)
- 2. Implementación del mapa Java que devuelve un valor predeterminado en lugar de nulo
- 3. ¿Por qué es lento Hibernate query.list()?
- 4. BitmapFactory.decodeResource devuelve el valor nulo
- 5. valor nulo del método genérico
- 6. getPackageManager() (.getInstalledPackages PackageManager.GET_ACTIVITIES) devuelve un valor nulo
- 7. Cómo establecer el valor predeterminado de la cadena vacía TextBox en lugar de nulo
- 8. Registry.LocalMachine.OpenSubKey() devuelve un valor nulo
- 9. Javascript document.getElementById ("id"). Value devuelve nulo en lugar de cadena vacía cuando el elemento es un cuadro de texto vacío
- 10. Enlazando la lista vacía o el valor nulo al parámetro de tabla de valor en un procedimiento almacenado (.net)
- 11. FacesContext.getCurrentInstance() devuelve un valor nulo en la clase Ejecutable
- 12. Type.GetType (typeName cadena) devuelve un valor nulo
- 13. El operador de coma devuelve el primer valor en lugar del segundo en la lista de argumentos?
- 14. SelectSingleNode siempre devuelve un valor nulo?
- 15. IE9, Win 7 window.open() devuelve un valor nulo en lugar de referencia de la ventana abierta
- 16. HttpServletRequest # getParts() devuelve una lista vacía
- 17. JasperReports: valor predeterminado en lugar de 'nulo'
- 18. deserializar tal que un campo es una lista vacía en lugar de nulo
- 19. File.list() devuelve un valor nulo para el directorio
- 20. ¿Devuelve el valor del método de JavaScript asíncrono?
- 21. La función de permutación recursiva siempre devuelve la lista vacía
- 22. PresentationSource.FromVisual (este) devuelve el valor nulo en WPF
- 23. F restricción # valor en lista vacía
- 24. C# DataTable ItemArray devuelve '{}': ¿cómo puedo probar el valor nulo?
- 25. Consulta Sqlite que devuelve 0 aunque el valor sea nulo
- 26. findViewById (android.R.id.progress) devuelve un valor nulo
- 27. ¿Cuándo Registry.CreateSubKey devuelve nulo?
- 28. El método getDrawingCache() de Android 2.1 View siempre devuelve nulo
- 29. getSystemResourceAsStream() devuelve nulo
- 30. Lanzar HttpResponseException en el método de acción WebAPI que devuelve la respuesta 200 vacía
¿por qué quieres null? Entiendo cuando consultas por un solo resultado: no encontrarlo tendría sentido para devolver nulo. ¡Pero list() siempre debe devolver una lista vacía! ¿Cuál es el significado de una lista nula? – ACV