hi thomas, since your repository works basically and the NPE occurs in hibernate, it sounds like a hibernate init-bug. if your setup requires some kind of init-logic (for whatever reason), you can provide a custom implementation of the ExternalContainer spi [1].
regards, gerhard [1] http://deltaspike.apache.org/documentation/test-control.html#ExternalContainer Am So., 10. Nov. 2019 um 20:15 Uhr schrieb Thomas Frühbeck <t.fruehb...@gmail.com>: > > Hi, > I just found a phenomenon which I would like to discuss before posting a > bug. > > I have a UnitTest using CDITestRunner which accesses JPA persistence via > Repositories. > The _first_ test accessing the Repository gets an NPE from JPA - see below. > > Debugging shows, that at first access the SetAttribute in this case is > NULL!! > > public JoinBuilder(Criteria<R, R> criteria, JoinType joinType, > SetAttribute<? super P, R> set) > { > this(criteria, joinType); > this.set = set; <-- is NULL at first run!! > } > > So the JoinBuilder cannot create a correct Predicate and returns null. > > Solution was: run some unnecessary query @Before, so that everything is > initialized > > Is this something known to the informed user, that I missed until now? > > Many thanks and best regards, > Thomas > > > java.lang.NullPointerException > at > org.hibernate.jpa.criteria.path.AbstractFromImpl.constructJoin(AbstractFromImpl.java:385) > at > org.hibernate.jpa.criteria.path.AbstractFromImpl.join(AbstractFromImpl.java:373) > at > org.hibernate.jpa.criteria.path.AbstractFromImpl.join(AbstractFromImpl.java:364) > at > org.apache.deltaspike.data.impl.criteria.predicate.JoinBuilder.joinMap(JoinBuilder.java:153) > at > org.apache.deltaspike.data.impl.criteria.predicate.JoinBuilder.build(JoinBuilder.java:108) > at > org.apache.deltaspike.data.impl.criteria.QueryCriteria.predicates(QueryCriteria.java:291) > at > org.apache.deltaspike.data.impl.criteria.QueryCriteria.createQuery(QueryCriteria.java:155) > at > org.apache.deltaspike.data.impl.criteria.QueryCriteria.getResultList(QueryCriteria.java:109) > at at.tfr.pfad.dao.SquadRepository.findByAssistant(SquadRepository.java:46) > at at.tfr.pfad.processing.MemberValidator.validate(MemberValidator.java:133) > at > at.tfr.pfad.view.TestDownloadBean.testValidationTruppVerein(TestDownloadBean.java:175) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) > at > org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$ContainerAwareMethodInvoker.invokeMethod(CdiTestRunner.java:359) > at > org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner$ContainerAwareMethodInvoker.evaluate(CdiTestRunner.java:331) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) > at > org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.runChild(CdiTestRunner.java:190) > at > org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner.runChild(CdiTestRunner.java:78)