简体   繁体   English

休眠查询返回null

[英]Hibernate query returns null

I have this query in java-hibernate and I want to return this result. 我在java-hibernate中有此查询,我想返回此结果。 But returns null. 但返回null。 How can I fix it? 我该如何解决?

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

return new BigDecimal(totalbalance+"");

Your HQL syntax is a bit off. 您的HQL语法有点错误。 Try this instead: 尝试以下方法:

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

return totalbalance;

This assumes that your DepositTransaction class has a field called beforeBalance with a getter method. 假定您的DepositTransaction类具有一个名为beforeBalance的字段, beforeBalance具有getter方法。

first you have to execute the query: 首先,您必须执行查询:

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

Then you have to check the result 那你要检查一下结果

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

Try this, 尝试这个,

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

instead of 代替

totalbalance = (BigDecimal) query;

As that look like a native query you should use createNativeQuery. 看起来像本机查询,您应该使用createNativeQuery。 You should also only look for a single result so use getSingleResult 您还应该只查找单个结果,因此请使用getSingleResult

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

Approach using SQLQuery object: 使用SQLQuery对象的方法:

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM