Hibernate - критерии упорядочивания по свойству формулы

Допустим, у меня есть объект 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", который работает нормально. Но это некрасиво - код должен "знать" эти свойства формулы, что нарушает принцип "писать один раз". Любые мысли или предложения по этому поводу ? Заранее благодарю.

7
задан Andrey Balaguta 24 November 2011 в 13:44
поделиться