Допустим, у меня есть объект MyEntity
], и у него есть свойство на основе формулы fmlaProp
. Теперь предположим, что я создаю критерий:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.property("fmlaProp")))
.addOrder(Order.asc("fmlaProp"));
в этом случае я получаю следующий SQL:
SELECT DISTINCT fmlaProp-sql FROM MY_ENTITY_TABLE ORDER BY fmlaProp-sql
который дает ошибку в Oracle, говоря, что выражение упорядочивания не выбрано. Затем я попробовал следующие критерии:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.alias(
Projections.property("fmlaProp"),
"alias1"))
.addOrder(Order.asc("alias1"));
Который генерирует "порядок по псевдониму1", который работает нормально. Но это некрасиво - код должен "знать" эти свойства формулы, что нарушает принцип "писать один раз". Любые мысли или предложения по этому поводу ? Заранее благодарю.