有时我的应用程序会尝试删除引用其他数据的数据,这会引发预期的数据完整性违规行为#34;
错误org.hibernate.util.JDBCExceptionReporter - Entrada em lote 0从item_tabela_protese删除,其中id =' 2' foi abortada。 Chame getNextException para ver a causa。
错误org.hibernate.util.JDBCExceptionReporter - 错误:更新或删除表" item_tabela_protese"违反外键约束" fk_item_tabela_protese"在桌子上" pedido_protese" Detalhe:Key(id)=(2)仍然从表" pedido_protese"中引用。
在上面的这个错误之后,我无法在应用程序中执行任何操作,我得到了一个" Postgres连接已关闭"。
错误org.hibernate.util.JDBCExceptionReporter - 此连接已关闭。
如何解决这个问题?
答案 0 :(得分:0)
强制回滚后,您必须关闭会话并获取新会话。通常,您只需rollback
事务并打开一个新事务,但看起来Hibernate可能会在看到错误时关闭连接。如果没有更多的日志细节,很难确定。
首先尝试回滚事务并获取新的Hibernate会话。
您不能在失败后继续在同一个事务中使用会话。该事务处于无效状态,除ROLLBACK
之外的所有语句都会产生错误。
如果您希望处理可能能够使用SAVEPOINT
和ROLLBACK TO SAVEPOINT
(性能成本),但很可能Hibernate的缓存不会处理得好。