perplexhub / rsql-jpa-specification

Java Library to Translate RSQL into Spring Data JPA Specification and QueryDSL Predicate
MIT License
233 stars 63 forks source link

Cannot search on more than 3 levels in a @ManyToOne association #51

Closed fabianotorresrj closed 3 years ago

fabianotorresrj commented 3 years ago

Hello, I am getting null pointer exception when I try to do a search using 4 levels like "locate.locateTag.tag.description".

locateTag and tag are complex objects

thank you

java.lang.NullPointerException: null at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.findPropertyPath(RSQLQueryDslPredicateConverter.java:47) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.visit(RSQLQueryDslPredicateConverter.java:111) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.visit(RSQLQueryDslPredicateConverter.java:26) at cz.jirutka.rsql.parser.ast.ComparisonNode.accept(ComparisonNode.java:70) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.lambda$visit$1(RSQLQueryDslPredicateConverter.java:250) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.visit(RSQLQueryDslPredicateConverter.java:250) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.visit(RSQLQueryDslPredicateConverter.java:26) at cz.jirutka.rsql.parser.ast.OrNode.accept(OrNode.java:42) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.lambda$visit$0(RSQLQueryDslPredicateConverter.java:243) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.visit(RSQLQueryDslPredicateConverter.java:243) at io.github.perplexhub.rsql.RSQLQueryDslPredicateConverter.visit(RSQLQueryDslPredicateConverter.java:26) at cz.jirutka.rsql.parser.ast.AndNode.accept(AndNode.java:42) at io.github.perplexhub.rsql.RSQLQueryDslSupport.toPredicate(RSQLQueryDslSupport.java:37) at io.github.perplexhub.rsql.RSQLQueryDslSupport.toPredicate(RSQLQueryDslSupport.java:29)

perplexhub commented 3 years ago

Could you refer to the sample test case? I use "projects.projectTag.localTag.description=='Local Tag 1'" and it works fine.

fabianotorresrj commented 3 years ago

Thanks for answering. Just for the record, I was using version 5.0.16. With version 5.0.17-SNAPSHOT it worked. I would like to know the expected date for her release. Thank you very much for your attention and congratulations on your work.

perplexhub commented 3 years ago

Actually, no code change since 5.0.16 excepted the test cases. By the way, I've created V5.0.17. Thanks for your support.