graphql-jpa-query icon indicating copy to clipboard operation
graphql-jpa-query copied to clipboard

NPE on nested @Embedded

Open sros-yort opened this issue 2 years ago • 4 comments

@Entity
@Table(name = "A")
public class A implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "id")
    private String id;

    @Embedded
    private B b;

}

@Embeddable
public class B implements Serializable {

    @Column(name = "b", nullable = false)
    private String b;

    @Embedded
    private C c;

}

@Embeddable
public class C implements Serializable {

    @Column(name = "c", nullable = false)
    private String c;

}
Caused by: java.lang.NullPointerException: Cannot invoke "javax.persistence.metamodel.EntityType.getName()" because "baseEntity" is null
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getObjectField(GraphQLJpaSchemaBuilder.java:946) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getObjectField(GraphQLJpaSchemaBuilder.java:909) ~[classes/:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na]
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getEmbeddableType(GraphQLJpaSchemaBuilder.java:852) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getAttributeType(GraphQLJpaSchemaBuilder.java:1080) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getAttributeOutputType(GraphQLJpaSchemaBuilder.java:1066) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getObjectField(GraphQLJpaSchemaBuilder.java:914) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.lambda$getEntityAttributesFields$5(GraphQLJpaSchemaBuilder.java:880) ~[classes/:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na]
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getEntityAttributesFields(GraphQLJpaSchemaBuilder.java:881) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.computeObjectType(GraphQLJpaSchemaBuilder.java:870) ~[classes/:na]
	at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1220) ~[na:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getObjectType(GraphQLJpaSchemaBuilder.java:862) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getQueryFieldByIdDefinition(GraphQLJpaSchemaBuilder.java:221) ~[classes/:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na]
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.getQueryType(GraphQLJpaSchemaBuilder.java:189) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.schema.impl.GraphQLJpaSchemaBuilder.build(GraphQLJpaSchemaBuilder.java:159) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.autoconfigure.GraphQLSchemaBuilderAutoConfiguration.lambda$defaultGraphQLJpaSchemaBuilderConfigurer$1(GraphQLSchemaBuilderAutoConfiguration.java:56) ~[classes/:na]
	at com.introproventures.graphql.jpa.query.autoconfigure.GraphQLSchemaAutoConfiguration.graphQLSchemaFactoryBean(GraphQLSchemaAutoConfiguration.java:31) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.24.jar:5.3.24]
	... 20 common frames omitted

sros-yort avatar Dec 26 '22 09:12 sros-yort

Hi @sros-yort , I am encountering the same issue in my project. Did you receive any feedback by any chance?

renzo-schembri avatar May 23 '23 12:05 renzo-schembri

Hi @igdianov , we are facing this issue. Can you help to check on it?

I suggest you look at this PR: https://github.com/introproventures/graphql-jpa-query/pull/367

DBunthai avatar May 28 '23 09:05 DBunthai

Hi @chanhengseang3 , @sros-yort we can upgrade this library from 0.3.37 to 0.4.0 and 0.4.1

but we can't go upper 0.4.4 due to this bug that causes a null-pointer in compile time

DBunthai avatar May 28 '23 10:05 DBunthai

This PR https://github.com/introproventures/graphql-jpa-query/pull/367 should fix it. I can backport it to maintenance branch, but I need the integration test included with the fix.

igdianov avatar Jul 02 '23 16:07 igdianov