我真的在休眠会话中苦苦挣扎,在对修改后的会话对象进行查询时,我从来没有得到我期望的结果。我认为我所有的问题都是相关的。最后一个如下:
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。