Иван Гладуш
Иван Гладуш

Reputation: 642

Hibernate java 10

I migrated my application from java 8 to java 10. But now I see the following exception when try to store something in a database

Caused by: javax.persistence.RollbackException: Error while committing the transaction
    at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:77) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517) ~[spring-orm-4.3.18.RELEASE.jar:4.3.18.RELEASE]
... 91 more
Caused by: org.hibernate.AssertionFailure: Exception releasing cache locks
    at org.hibernate.engine.spi.ActionQueue$AfterTransactionCompletionProcessQueue.afterTransactionCompletion(ActionQueue.java:990) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.spi.ActionQueue.afterTransactionCompletion(ActionQueue.java:513) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.internal.SessionImpl.afterTransactionCompletion(SessionImpl.java:2501) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.afterTransactionCompletion(JdbcCoordinatorImpl.java:479) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.afterCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:198) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$400(JdbcResourceLocalTransactionCoordinatorImpl.java:39) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:273) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:98) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517) ~[spring-orm-4.3.18.RELEASE.jar:4.3.18.RELEASE]
... 91 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private jdk.internal.reflect.ConstructorAccessorImpl jdk.internal.reflect.DelegatingConstructorAccessorImpl.delegate accessible: module java.base does not "opens jdk.internal.reflect" to unnamed module @55283c54
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:337) ~[?:?]
    at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:281) ~[?:?]
    at java.lang.reflect.Field.checkCanSetAccessible(Field.java:176) ~[?:?]
    at java.lang.reflect.Field.setAccessible(Field.java:170) ~[?:?]

I use the following dependencies

<spring.version>4.3.18.RELEASE</spring.version>
<spring-boot.version>1.5.14.RELEASE</spring-boot.version>
<hibernate-core.version>5.3.2.Final</hibernate-core.version>
<java.version>1.10</java.version>

Upvotes: 4

Views: 2852

Answers (1)

Ivan
Ivan

Reputation: 8758

This is the root cause

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private jdk.internal.reflect.ConstructorAccessorImpl jdk.internal.reflect.DelegatingConstructorAccessorImpl.delegate accessible: module java.base does not "opens jdk.internal.reflect" to unnamed module @55283c54

Java 10 has concept of modules and first of all public is not "that" public anymore and reflection is also not that powerful.

You could use JVM flag as suggested by @RobertHume but in fact you need to migrate to a newer Hibernate version that supports Java9/10 (if any).

Also check this link https://www.sitepoint.com/reflection-vs-encapsulation-in-the-java-module-system/#commandlineescapehatches for more details regarding suggested JVM flag

Upvotes: 5

Related Questions