休眠查询 returns 空

Hibernate query returns null

我在 java-hibernate 中有这个查询,我想 return 这个结果。但是 return 为空。我该如何解决?

BigDecimal totalbalance = null;
Query query = session.createQuery("select sum(beforeBalance) from DepositTransaction");
totalbalance = (BigDecimal) query;

return new BigDecimal(totalbalance+"");

您的 HQL 语法有点不对。试试这个:

BigDecimal totalbalance = null;
String theQuery = "select sum(dt.beforeBalance) from DepositTransaction dt";
Query query = session.createQuery(theQuery);
totalbalance = (BigDecimal) query.getSingleResult();

return totalbalance;

这假设您的 DepositTransaction class 有一个名为 beforeBalance 的字段和 getter 方法。

首先你必须执行查询:

List<BigDecimal> result = (List<BigDecimal>)query.list();

然后你要检查结果

if (result.length()!=0){
   return result.get(0)
}
return null;

试试这个,

totalbalance = (BigDecimal) query.getSingleResult();
return totalbalance;

而不是

totalbalance = (BigDecimal) query;

因为这看起来像本机查询,您应该使用 createNativeQuery。 你也应该只寻找一个结果,所以使用 getSingleResult

BigDecimal totalbalance = null;
String yourQuery = "select sum(dt.beforeBalance) from DepositTransaction dt";
Query query = session.createNativeQuery(yourQuery);
return new BigDecimal((BigDecimal) query.getSingleResult());

使用 SQLQuery 对象的方法:

String query = "select sum(beforeBalance) from DepositTransaction";
BigDecimal totalBalance = (BigDecimal)session.createSQLQuery(query).list().get(0);
return totalBalance;

试试这个 totalbalance = (BigDecimal)query.uniqueResult();