【问题标题】:hibernate criteria and if statement?休眠条件和if语句?
【发布时间】:2014-03-01 08:32:15
【问题描述】:

我想选择类似这个 MySQL 查询的东西,在休眠条件下如何做?

SELECT id, IF(type = 'P', amount, amount * -1) as amount FROM    report

【问题讨论】:

  • 同样的问题没有有用的回答
  • 在 Hibernate 中,您不会在查询中执行此操作,而是在 Java 代码中执行此操作。 Hibernate 是一个对象关系映射器,但我在您的问题中看不到任何对象关系。我认为您使用了错误的工具。

标签: java hibernate criteria


【解决方案1】:

我不知道如何使用标准来做到这一点,但您可以通过在 hibernate 中执行本机 sql 查询来实现相同的目标。 假设您的模型类是“Report”,并且它有一个名为“amount”的属性及其 getter 和 setter:

String query = "SELECT id, IF(type = 'P', amount, amount * -1) as amount FROM    report";
Session session = sessionFactory.openSession();
SQLQuery sqlQuery = session.createSQLQuery(query);
sqlQuery.setResultTransformer(Transformers.aliasToBean(Report.class));
List<Report> resultList = sqlQuery.list();
session.close();

【讨论】:

  • 谢谢你的重播,不幸的是我不能使用原生sql,有没有什么方法可以用不同的方法来达到这样的结果?
  • 我认为你可以在 HQL 中使用“Case When”,因为它似乎是从 3.0.3 开始添加的,但我相信它只会在 where 语句中起作用,试一试,让我知道怎么回事
  • 在 HQL 中这是可能的,但我使用包装类使用标准来处理过滤、排序、摸索和......所以我想要一个标准查询来做这样的事情,现在我认为这是不可能的。该死的标准该死的你。
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多