我隨機接收這個休眠錯誤,我無法重現它。休眠錯誤 - 已經有一個關聯的託管連接
已經有一個相關的管理連接
和堆棧跟蹤如下...
INFO | jvm 1 | 2013/03/31 18:16:20 | org.hibernate.TransactionException: Transaction not successfully started
INFO | jvm 1 | 2013/03/31 18:16:20 | at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:170)
INFO | jvm 1 | 2013/03/31 18:16:20 | at com.xxx.sss.helpers.HibernateUtil.getObjectsByCriteria(HibernateUtil.java:54)
我選擇的方法是這樣的:
public static ArrayList<?> getObjectsByCriteria(String sqlQuery, List<Object> params, int firstResult, int maxSize)
{
ArrayList<Object> result = null;
try
{
SessionFactoryHelper.getSessionFactory().getCurrentSession().getTransaction().begin();
Query q = SessionFactoryHelper.getSessionFactory().getCurrentSession().createQuery(sqlQuery);
if(params != null)
{
for (int i = 0; i < params.size(); i++)
{
q.setParameter(i, params.get(i));
}
}
if(firstResult != -1 && maxSize != -1)
{
q.setFirstResult(firstResult);
q.setMaxResults(maxSize);
}
q.setReadOnly(true);
result = (ArrayList<Object>) q.list();
}
catch(HibernateException ex)
{
logger.log(Level.SEVERE, ex.getMessage());
logQueryAndParams(sqlQuery, params);
}
catch(Exception ex)
{
logger.log(Level.SEVERE, ex.getMessage());
logQueryAndParams(sqlQuery, params);
}
finally
{
if(!SessionFactoryHelper.getSessionFactory().getCurrentSession().getTransaction().wasCommitted())
SessionFactoryHelper.getSessionFactory().getCurrentSession().getTransaction().commit();
}
return result;
}
任何想法,爲什麼我得到這個?我已經使用了Google,但只有很少的回覆。我沒有直接使用Spring直接升級Tomcat/Hibernate。
謝謝!
感謝您的響應。對不起,它們都是HQL查詢=)我只是一個命名不定的變量。 – Graeme