我在java-hibernate中有这个查询,我想返回这个结果。但是返回null。我该如何解决?
BigDecimal totalbalance = null;
Query query = session.createQuery("select sum(beforeBalance) from DepositTransaction");
totalbalance = (BigDecimal) query;
return new BigDecimal(totalbalance+"");
答案 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();