我一直在嘗試使用休眠計數行數,但我一直收到「0」記錄。這裏是我的代碼使用休眠計數行或記錄
public static Integer getLastDrugId(){
Integer result = 0;
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try{
tx = session.beginTransaction();
String hql = "SELECT count(*) FROM Drug";
Query query = session.createQuery(hql);
Integer e = (Integer) query.iterate().next();
if (e != null) {
result = 1;
}
} catch (Exception ex) {
if (tx != null) {
tx.rollback();
}
} finally {
session.close();
}
return result;
}
我在某處錯了嗎?
你檢查,如果你得到一個異常?你可能應該添加一個記錄器,讓它在你的catch塊中打印棧跟蹤,不要錯過它。 –
我在某種程度上是新的計數行。但是在打印stacktrace後,我得到了這個錯誤「java.lang.Long不能轉換爲java.lang.Integer」。但我並沒有在我的代碼中使用Long。 –
看起來像你的查詢返回一個Long,所以你必須按照這樣的方式接收它。如果需要將結果作爲Integer,則可以通過在查詢返回的Long上調用intValue()來手動進行轉換。 –