Hibernate查询返回null

时间:2015-05-22 07:51:19

标签: java hibernate-criteria

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

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

return new BigDecimal(totalbalance+"");

6 个答案:

答案 0 :(得分:0)

你的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类有一个名为beforeBalance的字段,并带有一个getter方法。

答案 1 :(得分:0)

首先你必须执行查询:

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

然后你必须检查结果

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

答案 2 :(得分:0)

试试这个,

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

而不是

totalbalance = (BigDecimal) query;

答案 3 :(得分:0)

因为它看起来像本机查询,所以你应该使用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());

答案 4 :(得分:0)

使用SQLQuery对象的方法:

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

答案 5 :(得分:0)

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