Digamos que tengo una entidad MyEntity
, y tiene una propiedad basada en fórmula fmlaProp
. Ahora digo creo un criterio:Hibernate - Criterios de ordenamiento por fórmula propiedad
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.property("fmlaProp")))
.addOrder(Order.asc("fmlaProp"));
en este caso me sale el siguiente SQL:
SELECT DISTINCT fmlaProp-sql FROM MY_ENTITY_TABLE ORDER BY fmlaProp-sql
cual da un error en Oracle diciendo que el fin-de expresión es no seleccionados. Luego probé los siguientes criterios:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.alias(
Projections.property("fmlaProp"),
"alias1"))
.addOrder(Order.asc("alias1"));
Lo que genera "orden por alias1" que funciona bien. Pero es algo feo: el código debe "conocer" esas propiedades de la fórmula, lo que viola el principio de "escribir una vez". ¿Alguna idea o sugerencia sobre eso? Gracias de antemano.
¿Qué es la parte '-sql'? – cherouvim