Математические операторы в критериях запросов - PullRequest
3 голосов
/ 14 апреля 2009

Учитывая сопоставленный класс гибернации:

@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;

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

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

Ответы [ 2 ]

5 голосов
/ 15 апреля 2009

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

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

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

1 голос
/ 14 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...