我真的在與休眠會話苦苦掙扎,我從來沒有想到在修改會話對象上進行查詢時的結果。我認爲我所有的問題都是相關的。最後一個是以下幾點:對象的Java Hibernate會話刪除
final Session iSession = AbstractDAO.getSessionFactory().openSession();
try {
iSession.beginTransaction();
MyObject iObject = DAOMyObject.getInstance().get(iSession,ObjectId);
iObject.setQuantity(0); //previously the quantity was different from zero
DAOMyObject.getInstance().update(iSession,iObject);
DAOMyObject.getInstance().deleteObjectWithZeroQuantities(iSession);
iSession.getTransaction().commit();
} catch (final Exception aException) {
iSession.getTransaction().rollback();
logger.error(aException.getMessage(), aException);
throw aException;
} finally {
iSession.close();
}
什麼我沒有變就是爲什麼對象不會被刪除,因爲我在會議上修改了它,使得刪除查詢應該找到它。我在創建具有增量id的對象時遇到了同樣的問題,然後在提交之前在同一個會話中創建另一個對象,並使用select max(id)+1
。但會話每次都會得到相同數量的ID。
請通過內嵌的'DAOMyObject'類執行的代碼。很難猜測這些自定義方法背後隱藏着什麼。 – nif