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