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