2015-05-22 243 views
0

我在java-hibernate中有這個查詢,我想返回這個結果。但是返回null。我該如何解決它?休眠查詢返回null

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

return new BigDecimal(totalbalance+""); 
+2

你不運行查詢,只是想投將查詢對象放入結果變量中將不起作用。您需要實際執行查詢。 – Micho

回答

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類有一個帶有getter方法稱爲beforeBalance場。

0

首先你要執行查詢:

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

然後你必須檢查結果

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

@Downvoter:請解釋 – Jens

0

試試這個,

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

,而不是

totalbalance = (BigDecimal) query; 
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()); 
0

方法使用的SQLQuery對象:

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

試試這個totalbalance = (BigDecimal)query.uniqueResult();