Tengo una tabla con 11 columnas, pero necesito obtener solo 2 de ellas en mi aplicación, estoy usando la combinación de primavera/hibernación/DAO. Por ahora tengo una clase de dominio que incluye los 11 campos y un archivo de mapeo que mapea las 11 columnas en la tabla. ¿Cómo uso solo 2 de ellos, no todos?Obteniendo menos columnas con hibernación
Respuesta
O bien:
Use proyecciones - Pro: nada que añadir - En contra: No Typesafe (el resultado es un
List
de filas, donde cada fila es unObject[])
:select f.foo, f.bar from FatEntity f
Uso una expresión de constructor en la cláusula SELECT (la clase especificada no es necesaria para ser una entidad o para mapearse en la base de datos) - Pro: solución de tipo seguro - Con: Más clases, a menos que reutilice
FatEntity
como titular, en cuyo caso muchos campos seránnull
:select new com.acme.FatEntityDetails(f.id, f.foo, f.bar) from FatEntity f
Tenga en cuenta que si no se especifica un nombre de clase de entidad en la cláusula
SELECT NEW
, las instancias de entidades resultantes son en el nuevo estado (sin identidad persistente).Usa otra entidad mapeada en la misma tabla con solo los campos obligatorios - Pro: Es una entidad real que puedes modificar y actualizar - Con: Más clases.
from LightEntity
Las principales diferencias entre # 2 y # 3 son:
2 no requiere el soporte de ser una entidad en absoluto.
- el titular en el n. ° 2 podría ser una entidad mapeada en otra tabla.
- si el n. ° 2 devuelve entidades, se encuentran en un estado nuevo (esto podría ser un problema o no).
Probar:
SELECT myEntity.one, myEntity.two FROM MyEntity myEntity
incluso se puede hacer:
SELECT new MyEntityDescription(myEntity.one, myEntity.two) FROM MyEntity myEntity
para obtener una lista de las descripciones de la entidad.
Si nunca necesita más que esas 2 columnas de la tabla, puede cambiar su asignación de hibernación para asignar solo esas 2 columnas necesarias a la clase de entidad. Solo asigna las columnas de la tabla a las que deseas acceder en tu aplicación. Tenga en cuenta que las restricciones de la base de datos en las columnas "ignoradas" pueden violarse como restricciones no nulas, claves externas o restricciones exclusivas.
¿qué pasa con la clase de dominio? ¿Necesito tener 2 campos allí también? –
- 1. MySQL enum con hibernación
- 2. Lombok con hibernación
- 3. Nombres generados de columnas y tablas en hibernación con guión bajo
- 4. Uso de hibernación con genéricos
- 5. data 'security' con java e hibernación
- 6. Obteniendo la suma de varias columnas de dos tablas
- 7. jboss con menos memoria
- 8. filas de recuento de hibernación con algunos criterios
- 9. Anotación de validación de hibernación: valide que al menos un campo no sea nulo
- 10. Persistir los campos de recopilación con hibernación
- 11. ¿Cómo reutilizar un objeto Criteria con hibernación?
- 12. HQL: consulta de Hibernación con ManyToMany
- 13. ¿Qué es la hibernación con fluidez?
- 14. CÓMO usar TENER COUNT (*) con hibernación
- 15. Orden de hibernación con nulos por última
- 16. Inserción masiva O actualización con hibernación?
- 17. Criterios de hibernación con restricciones en niños
- 18. HibernateInterceptor con resorte 3.1 e hibernación 4.01
- 19. Menos css con parámetros opcionales
- 20. Ehcache + hibernación
- 21. ¿Cuántas columnas hay demasiadas columnas?
- 22. Monitor c3p0 (con hibernación y Tomcat) con JConsole
- 23. Trabajar con múltiples criterios de hibernación con lógica y
- 24. FTS3 con columnas INTEGER
- 25. columnas Spanning con TableLayout
- 26. DataTable con columnas dinámicas
- 27. TreeView con columnas
- 28. ¿Cómo mantener el orden de las columnas al crear una nueva tabla usando hibernación?
- 29. Uso de funciones de base de datos para transformar columnas en criterios de hibernación
- 30. ¿Cómo se define el índice por varias columnas en la entidad de hibernación?
@Pascal Thivent ¿no puedo simplemente dejar 2 campos en mi clase de dominio y archivo de mapeo? –
@Gandalf Bueno, pensé que alguien estaba usando los otros campos. Si esto no es cierto, entonces puedes cambiar tu entidad actual. –
Gracias por las múltiples soluciones y explicaciones, ¿cómo se te ocurre eso? expirience? leyendo libros, entrenando? Aceptaré tu respuesta.si pudieras dirigirme en la dirección correcta sería genial, como: sitios web, ejemplos, libros. –