Dire che ho un'entità MyEntity
e ha una proprietà basata su formula fmlaProp
. Ora dico creo un criterio:Sospensione - Criteri di ordinamento per proprietà formula
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.property("fmlaProp")))
.addOrder(Order.asc("fmlaProp"));
in questo caso ottengo il seguente SQL:
SELECT DISTINCT fmlaProp-sql FROM MY_ENTITY_TABLE ORDER BY fmlaProp-sql
che dà un errore dicendo che Oracle order-by l'espressione non è selezionato. Poi ho provato i seguenti criteri:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.alias(
Projections.property("fmlaProp"),
"alias1"))
.addOrder(Order.asc("alias1"));
Che genera "ordine di alias1" che funziona correttamente. Ma è un po 'brutto - il codice deve "conoscere" le proprietà della formula, che viola il principio "scrivi una volta". Qualche idea o suggerimento su questo? Grazie in anticipo.
Qual è la parte '-sql'? – cherouvim