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)

Reply via email to