在使用Hibernate的sum函數進行數據的統計時,出現一個錯誤代碼:
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)還是為空.(數據庫中查詢的賬號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函數使用出錯的問題。
【編輯推薦】
- 選擇EJB3.0,不再需要Spring+Hibernate
- Hibernate一對多關系的處理
- Struts與Hibernate的***結合方案
- 淺談Struts分頁中的Hibernate如何實現