[PersistenceUnit: defaultPersistenceUnit] Unable to build Hibernate SessionFactory

This issue enounted at runtime, when I was trying to upgrade play framework 2.8 to 2.9

hibernate version “org.hibernate” % “hibernate-core” % “6.6.20.Final”

sbt version 1.11.3, java 11 and scala 2.13.16

Caused by: PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to build Hibernate SessionFactory
	at EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1601)
	at EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1522)
	at HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:55)
	at Persistence.createEntityManagerFactory(Persistence.java:80)
	at Persistence.createEntityManagerFactory(Persistence.java:55)
	at DefaultJPAApi.lambda$start$0(DefaultJPAApi.java:74)
	at java.base/Iterable.forEach(Iterable.java:75)
	at DefaultJPAApi.start(DefaultJPAApi.java:70)
	at DefaultJPAApi$JPAApiProvider.<init>(DefaultJPAApi.java:57)
	at DefaultJPAApi$JPAApiProvider$$FastClassByGuice$$248ad760.GUICE$TRAMPOLINE(<generated>)
	at DefaultJPAApi$JPAApiProvider$$FastClassByGuice$$248ad760.apply(<generated>)
	at DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:82)
	at ConstructorInjector.provision(ConstructorInjector.java:114)
	at ConstructorInjector.construct(ConstructorInjector.java:91)
	at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
	at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at SingletonScope$1.get(SingletonScope.java:169)
	at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
	at BoundProviderFactory.get(BoundProviderFactory.java:58)
	at SingleParameterInjector.inject(SingleParameterInjector.java:40)
	at SingleParameterInjector.getAll(SingleParameterInjector.java:60)
	at ConstructorInjector.provision(ConstructorInjector.java:113)
	at ConstructorInjector.construct(ConstructorInjector.java:91)
	at ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:300)
	at FactoryProxy.get(FactoryProxy.java:60)
	at ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at SingletonScope$1.get(SingletonScope.java:169)
	at InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45)
	at SingleFieldInjector.inject(SingleFieldInjector.java:50)
	at MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146)
	at MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:101)
	at Initializer$InjectableReference.get(Initializer.java:256)
	at Initializer.injectAll(Initializer.java:153)
	at InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
	at InternalInjectorCreator.build(InternalInjectorCreator.java:113)
	at Guice.createInjector(Guice.java:87)
	at Guice.createInjector(Guice.java:78)
	at GuiceBuilder.injector(GuiceInjectorBuilder.scala:200)
	at GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:176)
	at GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
	at DevServerStart$DevServerApplicationProvider$1.$anonfun$reload$2(DevServerStart.scala:233)
	at Threads$.withContextClassLoader(Threads.scala:22)
	at DevServerStart$DevServerApplicationProvider$1.reload(DevServerStart.scala:225)
	at DevServerStart$DevServerApplicationProvider$1.get(DevServerStart.scala:190)
	at AkkaHttpServer.handleRequest(AkkaHttpServer.scala:326)
	at AkkaHttpServer.$anonfun$createServerBinding$1(AkkaHttpServer.scala:224)
	at MapAsyncUnordered$$anon$31.onPush(Ops.scala:1430)
	at GraphInterpreter.processPush(GraphInterpreter.scala:542)
	at GraphInterpreter.processEvent(GraphInterpreter.scala:496)
	at GraphInterpreter.execute(GraphInterpreter.scala:390)
	at GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:650)
	at GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:521)
	at GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:625)
	at ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:800)
	at ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:818)
	at Actor.aroundReceive(Actor.scala:537)
	at Actor.aroundReceive$(Actor.scala:535)
	at ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:716)
	at ActorCell.receiveMessage(ActorCell.scala:579)
	at ActorCell.invoke(ActorCell.scala:547)
	at Mailbox.processMailbox(Mailbox.scala:270)
	at Mailbox.run(Mailbox.scala:231)
	at Mailbox.exec(Mailbox.scala:243)
	at java.base/ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: ArrayIndexOutOfBoundsException: Index 49 out of bounds for length 49
	at ImmutableFetchList$Builder.add(ImmutableFetchList.java:127)
	at LoaderSelectBuilder.lambda$createFetchableConsumer$3(LoaderSelectBuilder.java:965)
	at LoaderSelectBuilder.visitFetches(LoaderSelectBuilder.java:786)
	at LoaderSqlAstCreationState.visitFetches(LoaderSqlAstCreationState.java:179)
	at AbstractFetchParent.afterInitialize(AbstractFetchParent.java:42)
	at AbstractEntityResultGraphNode.afterInitialize(AbstractEntityResultGraphNode.java:74)
	at AbstractEntityPersister.createDomainResult(AbstractEntityPersister.java:1421)
	at LoaderSelectBuilder.generateSelect(LoaderSelectBuilder.java:503)
	at LoaderSelectBuilder.createSelect(LoaderSelectBuilder.java:256)
	at SingleIdEntityLoaderStandardImpl.createLoadPlan(SingleIdEntityLoaderStandardImpl.java:182)
	at SingleIdEntityLoaderStandardImpl.lambda$new$0(SingleIdEntityLoaderStandardImpl.java:41)
	at SingleIdEntityLoaderStandardImpl.<init>(SingleIdEntityLoaderStandardImpl.java:61)
	at SingleIdEntityLoaderStandardImpl.<init>(SingleIdEntityLoaderStandardImpl.java:38)
	at AbstractEntityPersister.buildSingleIdEntityLoader(AbstractEntityPersister.java:913)
	at AbstractEntityPersister.buildSingleIdEntityLoader(AbstractEntityPersister.java:902)
	at AbstractEntityPersister.prepareLoaders(AbstractEntityPersister.java:3531)
	at MappingMetamodelImpl.finishInitialization(MappingMetamodelImpl.java:208)
	at SessionFactoryImpl.initializeMappingModel(SessionFactoryImpl.java:373)
	at SessionFactoryImpl.<init>(SessionFactoryImpl.java:302)
	at SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:463)
	at EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1517)
	... 66 more

In case if you need my persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="https://jakarta.ee/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
  version="3.0">
    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <non-jta-data-source>defaultDS</non-jta-data-source>
        <mapping-file>META-INF/base-mappings.xml</mapping-file>
        <class>models</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2012Dialect" />
            <property name="hibernate.current_session_context_class" value="thread" />
            <property name="hibernate.jdbc.use_scrollable_resultset" value="true" />
            <property name="hibernate.max_fetch_depth" value="4" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.generate_statistics" value="true" />
            <property name="hibernate.order_updates" value="true" />
            <property name="hibernate.jdbc.batch_size" value="50" />
            <property name="hibernate.jdbc.batch_versioned_data" value="true" />
            <property name="hibernate.id.new_generator_mappings" value="false" />
            <property name="hibernate.proc.param_null_passing" value="true" />
            <property name="jakarta.persistence.query.timeout" value="300000" />
        </properties>
    </persistence-unit>
    
</persistence>

and base-mappings.xml looks like

<entity-mappings
  xmlns="https://jakarta.ee/xml/ns/persistence/orm"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
        https://jakarta.ee/xml/ns/persistence/orm
        https://jakarta.ee/xml/ns/persistence/orm/orm_3_0.xsd"
  version="3.0">
    <description>Entity mappings</description>
    <package>models</package>
    <entity class="models.Model1"></entity>
	<entity class="models.Model2"></entity>
					.
					.
					.
</entity-mappings>

Please update to 6.6.37.Final and report back if you still hit the issue. Ideally, try to create a reproducer with our test case template and if you are able to reproduce the issue, create a bug ticket in our issue tracker and attach that reproducer.

Sure, I will do that and let you know, Thank you

Hi @beikov You really save a day, It worked finally :slightly_smiling_face:

1 Like