Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IllegalStateException LogicalConnectionManagedImpl is closed Hibernate

Tags:

java

hibernate

h2

I'm using H2 Database with hibernate on JAVA and I'm getting a weird error. I have created my abstract repository to manage the basic CRUD operation.

The exception I am getting is this:

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 save method:

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;
}

I am a CS student and I am not very much familiar with Hibernate. I'm not getting this error on my computer, only on other computers with the JAR file builded.

P.S English isn't my main language so I am very sorry if you don't understand me clearly!

like image 769
William James Avatar asked Jan 19 '26 00:01

William James


1 Answers

After hours of debugging I found the error! The error was that a column exceeded the length and the exception was coming from the catch block. The catch block was trying to rollback something that its connection was already closed. I hope this will be helpful to someone!

like image 141
William James Avatar answered Jan 21 '26 13:01

William James



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!