2013-04-05 3 views
4

Как вы пишете критерии при условии, используя условия спящего режима.Просьба привести пример для оператора If в условиях спящего режима

Мой запрос, который должен быть преобразован в

SELECT date, product, IF(type = 'msrp', amount, 0) price, 
    IF(type != 'msrp', amount, 0) tax FROM productdetail group by date, product; 

Укажите правильное использование если заявление в критериях Hibernate.

+0

Это не поддерживается критериями API. Вам понадобится реализовать свою собственную проекцию (если это возможно, я не проверял API), если вам это нужно. –

ответ

5

Как @JBnizet сказал, Это не поддерживается критериями API., если вы не используете NHibernate

, если вы используете NHibernate

Projections.Conditional(
     Restrictions.EqProperty(.............. 

Но вот мои возможные решения с Hibernate.

1) Вы можете использовать один и тот же запрос, используя NativeSqlQuery в таком типе ситуаций

2) или с помощью HQL.There является expression in HQL называется case when .Это может быть полезным Using a CASE statement in HQL select

0

Стандартный обходной путь for union query - это таблица View, в противном случае для обработки результатов в java есть два критерия и логика.