I have a reproducer as well and have a partial fix already. Just doing some more testing now to make sure some other edge cases I discovered are handled properly.
Am 05.03.2018 13:08 schrieb "Petar Tahchiev" <paranoia...@gmail.com>: > I managed to reproduce it. Here's the bug: https://hibernate.atlassian. > net/browse/HHH-12354 and here is the project to reproduce it: > https://github.com/ptahchiev/hibernate-test-case-templates/tree/nlp > > 2018-03-01 10:49 GMT+02:00 Vlad Mihalcea <mihalcea.v...@gmail.com>: > >> Hi Petar, >> >> You can use this template: >> >> http://in.relation.to/2016/01/14/hibernate-jpa-test-case-template/ >> >> to create a test case that replicates the issue. You don't need to >> provide all entities, >> just the 4 entities that build that hierarchy you have mentioned in your >> email. >> >> If you can replicate it, please open a Jira issue and attach the test >> case so that it's easier >> to investigate the cause and provide a fix. >> >> Thanks, >> Vlad >> >> On Thu, Mar 1, 2018 at 10:41 AM, Petar Tahchiev <paranoia...@gmail.com> >> wrote: >> >>> Hi Christian, >>> >>> My model has more than 250 entities big. Here's the code that throws the >>> NLP: >>> >>> Class<?> c1 = clazz1.getMappedClass(); >>> Class<?> c2 = commonPersistentClass.getMappedClass(); >>> MappedSuperclass commonMappedSuperclass = null; >>> >>> // First we traverse up the clazz2/commonPersistentClass super types >>> until we find a common type >>> while ( !c2.isAssignableFrom( c1 ) ) { >>> if ( commonPersistentClass == null) { >>> if ( commonMappedSuperclass.getSuperPersistentClass() == null ) >>> { // <------------------------ NLPEX happens here!!!!!! >>> commonMappedSuperclass = >>> commonMappedSuperclass.getSuperMappedSuperclass(); >>> commonPersistentClass = null; >>> } >>> else { >>> commonPersistentClass = >>> commonMappedSuperclass.getSuperPersistentClass(); >>> commonMappedSuperclass = null; >>> } >>> } >>> else { >>> if ( commonPersistentClass.getSuperclass() == null ) { >>> commonMappedSuperclass = >>> commonPersistentClass.getSuperMappedSuperclass(); >>> commonPersistentClass = null; >>> } >>> else { >>> commonPersistentClass = commonPersistentClass.getSuperclass(); >>> commonMappedSuperclass = null; >>> } >>> } >>> } >>> >>> As you can see the commonMappedSuperclass is not initialized and stays >>> null! >>> At this moment c1 is CustomerEntity and c2 is UserGroupEntity. The >>> hierarchy looks like this: >>> >>> Principal >>> / \ >>> Usergroup User >>> | >>> Customer >>> >>> HTH >>> >>> >>> >>> 2018-02-28 21:52 GMT+02:00 Christian Beikov <christian.bei...@gmail.com >>> >: >>> >>> > Hey, I saw the comment on the issue. Thanks for reporting. Could you >>> > maybe post the model that causes this? I'd need to create a reproducer >>> > to be able to analyze this further. >>> > >>> > >>> > Mit freundlichen Grüßen, >>> > ------------------------------------------------------------ >>> ------------ >>> > *Christian Beikov* >>> > Am 28.02.2018 um 20:11 schrieb Petar Tahchiev: >>> > > Hi guys, >>> > > I have this exception with latest 5.2.14 (my project runs fine with >>> > 5.2.13): >>> > > >>> > > Caused by: javax.persistence.PersistenceException: [PersistenceUnit: >>> > > default] Unable to build Hibernate SessionFactory >>> > > at >>> > > org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImp >>> > l.persistenceException(EntityManagerFactoryBuilderImpl.java:970) >>> > > at >>> > > org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderI >>> mpl.build( >>> > EntityManagerFactoryBuilderImpl.java:895) >>> > > at >>> > > org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceP >>> > rovider.createContainerEntityManagerFactory(SpringHibernateJ >>> paPersistenceP >>> > rovider.java:57) >>> > > at >>> > > org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean. >>> > createNativeEntityManagerFactory(LocalContainerEntityManagerFac >>> > toryBean.java:365) >>> > > at >>> > > org.springframework.orm.jpa.AbstractEntityManagerFactoryBean. >>> > buildNativeEntityManagerFactory(AbstractEntityManagerFactory >>> Bean.java:387) >>> > > at >>> > > org.springframework.orm.jpa.AbstractEntityManagerFactoryBe >>> > an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:376) >>> > > at >>> > > org.springframework.orm.jpa.LocalContainerEntityManagerFac >>> > toryBean.afterPropertiesSet(LocalContainerEntityManagerFac >>> > toryBean.java:341) >>> > > at >>> > > org.springframework.beans.factory.support.AbstractAutowireCa >>> pableBeanFac >>> > tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769) >>> > > at >>> > > org.springframework.beans.factory.support.AbstractAutowireCa >>> pableBeanFac >>> > tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706) >>> > > ... 32 more >>> > > Caused by: org.hibernate.MappingException: Could not instantiate >>> > persister >>> > > org.hibernate.persister.entity.SingleTableEntityPersister >>> > > at >>> > > org.hibernate.persister.internal.PersisterFactoryImpl. >>> > createEntityPersister(PersisterFactoryImpl.java:112) >>> > > at >>> > > org.hibernate.persister.internal.PersisterFactoryImpl. >>> > createEntityPersister(PersisterFactoryImpl.java:77) >>> > > at >>> > > org.hibernate.metamodel.internal.MetamodelImpl. >>> > initialize(MetamodelImpl.java:128) >>> > > at >>> > > org.hibernate.internal.SessionFactoryImpl.<init>( >>> > SessionFactoryImpl.java:300) >>> > > at >>> > > org.hibernate.boot.internal.SessionFactoryBuilderImpl.build( >>> > SessionFactoryBuilderImpl.java:460) >>> > > at >>> > > org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderI >>> mpl.build( >>> > EntityManagerFactoryBuilderImpl.java:892) >>> > > ... 39 more >>> > > Caused by: java.lang.NullPointerException >>> > > at >>> > > org.hibernate.persister.entity.AbstractPropertyMapping. >>> > getSuperCollection(AbstractPropertyMapping.java:285) >>> > > at >>> > > org.hibernate.persister.entity.AbstractPropertyMapping.addPr >>> opertyPath( >>> > AbstractPropertyMapping.java:198) >>> > > at >>> > > org.hibernate.persister.entity.AbstractPropertyMapping. >>> > initPropertyPaths(AbstractPropertyMapping.java:395) >>> > > at >>> > > org.hibernate.persister.entity.AbstractEntityPersister. >>> > initOrdinaryPropertyPaths(AbstractEntityPersister.java:2300) >>> > > at >>> > > org.hibernate.persister.entity.AbstractEntityPersister. >>> > initPropertyPaths(AbstractEntityPersister.java:2347) >>> > > at >>> > > org.hibernate.persister.entity.AbstractEntityPersister.postC >>> onstruct( >>> > AbstractEntityPersister.java:3906) >>> > > at >>> > > org.hibernate.persister.entity.SingleTableEntityPersister.<init>( >>> > SingleTableEntityPersister.java:437) >>> > > at sun.reflect.GeneratedConstructorAccessor94.newInstance(Unkno >>> wn >>> > > Source) >>> > > at >>> > > sun.reflect.DelegatingConstructorAccessorImpl.newInstance( >>> > DelegatingConstructorAccessorImpl.java:45) >>> > > at java.lang.reflect.Constructor.newInstance(Constructor.java:4 >>> 23) >>> > > at >>> > > org.hibernate.persister.internal.PersisterFactoryImpl. >>> > createEntityPersister(PersisterFactoryImpl.java:96) >>> > > ... 44 more >>> > > >>> > > >>> > > >>> > > >>> > > >>> > >>> > _______________________________________________ >>> > hibernate-dev mailing list >>> > hibernate-dev@lists.jboss.org >>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> >>> >>> >>> >>> -- >>> Regards, Petar! >>> Karlovo, Bulgaria. >>> --- >>> Public PGP Key at: >>> http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x19658550C3110611 >>> Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611 >>> _______________________________________________ >>> hibernate-dev mailing list >>> hibernate-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> >> >> > > > -- > Regards, Petar! > Karlovo, Bulgaria. > --- > Public PGP Key at: http://pgp.mit.edu:11371/pks/lookup?op=get&search= > 0x19658550C3110611 > Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611 > _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev