本文向您介紹使用Hibernate的sum函數(shù)進行數(shù)據(jù)的統(tǒng)計時,出現(xiàn)的錯誤代碼以及相關(guān)的解決辦法。
在使用Hibernate的sum函數(shù)進行數(shù)據(jù)的統(tǒng)計時,出現(xiàn)一個錯誤代碼:
Java代碼
String sql = "select SUM(nf.fee) from CFee as nf where nf.adminAccount='testaccount' "; public long getListSqlCountsLong(String sql) { beginTransaction(); List li = getSession().createQuery(sql).list(); if (li == null || li.isEmpty()) { return 0; } else {return ((Integer) li.get(0)).longValue(); } } String sql = "select SUM(nf.fee) from CFee as nf where nf.adminAccount='testaccount' "; public long getListSqlCountsLong(String sql) { beginTransaction(); List li = getSession().createQuery(sql).list(); if (li == null || li.isEmpty()) { return 0; } else {return ((Integer) li.get(0)).longValue(); } } |
這樣使用報null錯誤.
List的size明明等于1,但li.get(0)還是為空.(數(shù)據(jù)庫中查詢的賬號sum本來就為null??可能是.)
解決方法:
Java代碼
String sql = "select SUM(nf.fee) from CFee as nf where nf.adminAccount='testaccount' "; public long getListSqlCountsLong(String sql) { beginTransaction(); List li = getSession().createQuery(sql).list(); if (li == null || li.isEmpty()) { return 0; } else { if (li.get(0) == null) { return 0; } return ((Integer) li.get(0)).longValue(); } } String sql = "select SUM(nf.fee) from CFee as nf where nf.adminAccount='testaccount' "; public long getListSqlCountsLong(String sql) { beginTransaction(); List li = getSession().createQuery(sql).list(); if (li == null || li.isEmpty()) { return 0; } else { if (li.get(0) == null) { return 0; } return ((Integer) li.get(0)).longValue(); } } |
解決方法很簡單,就是增加一個判斷就可以了,如果li.get(0)為空,則返回0,不為空,返回值. 這樣就可以解決Hibernate sum函數(shù)使用出錯的問題。
【編輯推薦】
- 選擇EJB3.0,不再需要Spring+Hibernate
- Hibernate一對多關(guān)系的處理
- Struts與Hibernate的***結(jié)合方案
- 淺談Struts分頁中的Hibernate如何實現(xiàn)