Java Hibernate查询返回null

Java Hibernate查询返回null,java,hibernate-criteria,Java,Hibernate Criteria,我在JavaHibernate中有这个查询,我想返回这个结果。但是返回null。我怎样才能修好它 BigDecimal totalbalance = null; Query query = session.createQuery("select sum(beforeBalance) from DepositTransaction"); totalbalance = (BigDecimal) query; return new BigDecimal(totalbalance+""); 您的HQ

我在JavaHibernate中有这个查询,我想返回这个结果。但是返回null。我怎样才能修好它

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

首先您必须执行查询:

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

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)查询

您没有运行查询,只是尝试将查询对象强制转换到结果变量中是行不通的。您需要实际执行查询。
String query = "select sum(beforeBalance) from DepositTransaction";
BigDecimal totalBalance = (BigDecimal)session.createSQLQuery(query).list().get(0);
return totalBalance;