休眠查询 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();
我在 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();