2009-04-14 5 views
3

Учитывая отображенный класс спящего режима:Математические операторы Criteria запросов

@Entity 
public class MyTestClass { 
    /* id and stuff */ 

    private Integer aValue; 
    private Integer bValue; 
} 

вы можете сделать следующее с HQL:

Query query 
    = getCurrentSession().createQuery("select aValue * bValue from MyTestClass"); 
List<Double> resultList = query.list; 

и получить вычисленный результат из.

Можно ли сделать что-то похожее на это с помощью API критериев? Я до сих пор не нашел способ использовать математические операции с API-интерфейсом Criteria. У нас есть совокупные функции, такие как sum, avg и т. Д., Но не основные математические операторы?

ответ

5

Вы можете сделать новое свойство в классе, которое это вычисленное значение. Просто укажите атрибут формулы для этого свойства. Затем вы можете включить это свойство в свои критерии.

<property name="product" formula="aValue*bValue" /> 

формула (необязательно): выражение SQL, которое определяет значение для вычисленного свойства. Вычислимые свойства не имеют собственного отображения столбцов.

1

вы всегда можете добавить его в SQL я думаю, что был какой-то способ sqlProjection/sqlRestriction