Wildfly 22 - Hibernate-Core 5.4.32 - Unable to build PersistenceContext NullPointerException while checking for existing foreign key - AbstractSchemaMigrator.java - equivalentForeignKeyExistsInDatabase:477
Description
Wildfly 22 - Hibernate-Core 5.4.32 - Unable to build PersistenceContext due to NullPointerException while checking for existing foreign key - blocks wildfly ear deployment.
m.getReferencingColumnMetadata() returns null, and it throws nullpointerexception which is unhandled and it blocking the wildfly deployment
Need to add null check and handle NullpointerException.
Trace:
2021-08-16 10:08:24,179 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool – 254) MSC000001: Failed to start service jboss.persistenceunit."cems.ear/inventoryManager.jar#InventoryPersistenceUnit": org.jboss.msc.service.StartException in service jboss.persistenceunit."cems.ear/inventoryManager.jar#InventoryPersistenceUnit": javax.persistence.PersistenceException: [PersistenceUnit: InventoryPersistenceUnit] Unable to build Hibernate SessionFactory at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:198) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:128) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final] at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_292] at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:664) [wildfly-elytron-security-manager-1.14.1.Final.jar:1.14.1.Final] at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:213) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final] at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_292] at org.jboss.threads.JBossThread.run(JBossThread.java:513) Caused by: javax.persistence.PersistenceException: [PersistenceUnit: InventoryPersistenceUnit] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1327) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1253) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:170) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final] ... 10 more Caused by: java.lang.NullPointerException at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.lambda$checkForExistingForeignKey$0(AbstractSchemaMigrator.java:467) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) [rt.jar:1.8.0_292] at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1361) [rt.jar:1.8.0_292] at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276) [rt.jar:1.8.0_292] at java.util.HashMap$ValueSpliterator.tryAdvance(HashMap.java:1649) [rt.jar:1.8.0_292] at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) [rt.jar:1.8.0_292] at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) [rt.jar:1.8.0_292] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) [rt.jar:1.8.0_292] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) [rt.jar:1.8.0_292] at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) [rt.jar:1.8.0_292] at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) [rt.jar:1.8.0_292] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [rt.jar:1.8.0_292] at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:516) [rt.jar:1.8.0_292] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.checkForExistingForeignKey(AbstractSchemaMigrator.java:473) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applyForeignKeys(AbstractSchemaMigrator.java:423) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:249) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1250) [hibernate-core-5.3.20.Final.jar:5.3.20.Final] ... 12 more
I’m not sure what you’re doing, but the logs show you’re mixing versions of Hibernate ORM: one message is about 5.4.32 while others are about 5.3.20.Final - that’s an invalid configuration, and WildFly doesn’t support ORM series 5.4.x.
So I’ll close this issue as invalid, please open again if you can provide with a reproducer using a single version of ORM.
Andrea Boriero August 20, 2021 at 9:18 AM
Hi can you please provide a failing test? It would be of great help especially to prevent future regressions. Here you can find a template that can help you write a test.
Wildfly 22 - Hibernate-Core 5.4.32 - Unable to build PersistenceContext due to NullPointerException while checking for existing foreign key - blocks wildfly ear deployment.
AbstractSchemaMigrator.java - equivalentForeignKeyExistsInDatabase:477
m.getReferencingColumnMetadata() returns null, and it throws nullpointerexception which is unhandled and it blocking the wildfly deployment
Need to add null check and handle NullpointerException.
Trace:
2021-08-16 10:08:24,179 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool – 254) MSC000001: Failed to start service jboss.persistenceunit."cems.ear/inventoryManager.jar#InventoryPersistenceUnit": org.jboss.msc.service.StartException in service jboss.persistenceunit."cems.ear/inventoryManager.jar#InventoryPersistenceUnit": javax.persistence.PersistenceException: [PersistenceUnit: InventoryPersistenceUnit] Unable to build Hibernate SessionFactory
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:198) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:128) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_292]
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:664) [wildfly-elytron-security-manager-1.14.1.Final.jar:1.14.1.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:213) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final]
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_292]
at org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: InventoryPersistenceUnit] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1327) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1253) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:170) [wildfly-jpa-22.0.0.Final.jar:22.0.0.Final]
... 10 more
Caused by: java.lang.NullPointerException
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.lambda$checkForExistingForeignKey$0(AbstractSchemaMigrator.java:467) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) [rt.jar:1.8.0_292]
at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1361) [rt.jar:1.8.0_292]
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276) [rt.jar:1.8.0_292]
at java.util.HashMap$ValueSpliterator.tryAdvance(HashMap.java:1649) [rt.jar:1.8.0_292]
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) [rt.jar:1.8.0_292]
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) [rt.jar:1.8.0_292]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) [rt.jar:1.8.0_292]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) [rt.jar:1.8.0_292]
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) [rt.jar:1.8.0_292]
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) [rt.jar:1.8.0_292]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [rt.jar:1.8.0_292]
at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:516) [rt.jar:1.8.0_292]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.checkForExistingForeignKey(AbstractSchemaMigrator.java:473) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applyForeignKeys(AbstractSchemaMigrator.java:423) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:249) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1250) [hibernate-core-5.3.20.Final.jar:5.3.20.Final]
... 12 more