请提供hibernate条件中If语句的示例

如何使用hibernate标准编写条件的条件。

我需要转换的查询是

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

请在hibernate标准中提供if语句的正确用法。

正如@JBnizet所说, 标准API不支持这一点。 除非你使用NHibernate

如果你使用NHIbernate

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

但这是我使用Hibernate的可能解决方案。

1)您可以使用相同的查询在这种情况下使用NativeSqlQuery

2)或者通过使用HQL.HQL中有一个表达式,称为case when 。这可能有用在HQL select中使用CASE语句

联合查询的标准解决方法是View表,否则java中有2个条件和逻辑来操作结果。