如何解决IllegalStateException LogicalConnectionManagedImpl已关闭Hibernate
我在JAVA上将H2数据库与Hibernate一起使用,但遇到了奇怪的错误。 我已经创建了抽象存储库来管理基本的CRUD操作。
我得到的例外是:
java.lang.IllegalStateException: org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl@d20d74a is closed
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.errorIfClosed(AbstractLogicalConnectionImplementor.java:37)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:135)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:254)
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:116)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:294)
at org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:139)
at repositories.AbstractRepository.save(AbstractRepository.java:32)
at services.ResultService.saveResult(ResultService.java:76)
at services.API.WebRequestService.run(WebRequestService.java:124)
at services.API.ThreadService.run(ThreadService.java:67)
AbstractRepository保存方法:
public <T> T save(T t) {
Transaction transaction = null;
try (Session session = HibernateConfig.getSessionFactory().openSession()) {
transaction = session.beginTransaction();
Serializable entityId = session.save(t);
transaction.commit();
T createdEntity = (T) session.get(t.getClass(),entityId);
return createdEntity;
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
return null;
}
我是一名CS学生,对Hibernate不太熟悉。我的计算机上没有出现此错误,只有在构建了JAR文件的其他计算机上才出现此错误。
P.S英语不是我的主要语言,如果您对我的理解不清,我非常抱歉!
解决方法
经过数小时的调试,我发现了错误! 错误是一列超出长度,并且异常来自catch块。 catch块正在尝试回滚其连接已关闭的内容。 我希望这对某人有帮助!
,我在尝试使用 Hibernate 5.5.3 版在两个表之间创建嵌入关系时遇到了同样的错误。是的,上面的答案对我一次性调试错误很有帮助。感谢@威廉。在我的情况下也是如此,由于 Embeddable 类中发生异常,catch 块试图回滚事务。问题是我在 Embeddable 类中没有默认构造函数。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。