我有一个具有复合ID的对象。计划正在进行中。
StaleStateException
。StaleStateException
为一个案件投掷他人。{/ li>
根据我的理解,如果过时的对象附加到会话,那么除非我们清除会话,否则应该总是抛出StaleStateException
。
是否还有其他因素(清除除外)影响了我的第4步。我想知道为什么它不会为后续调用抛出StaleStateException
。
答案 0 :(得分:1)
如果Session抛出异常(包括任何SQLException),则立即回滚数据库事务,调用Session.close()并丢弃Session实例。 Session的某些方法不会使会话保持一致状态。 Hibernate抛出的异常都不能被视为可恢复的。确保通过在finally块中调用close()来关闭Session。
在抛出异常后,您尝试使用该会话,这将导致不可预测的行为,如文档所述。