I encountered an error while using blazebit persistence pagination queries in the springboot project

14 Views Asked by At

My project is the Maven project of Springboot.The querydSL version I am using is 5.0.0.The database I am using is PostgreSQL. I want to achieve pagination queries through a spatial query condition.such as 'ST_Within'. Here is my code:

type java
@RequestMapping("/list")
    public AjaxResult list(TrafficHotsQueryDTO trafficHotsQueryDTO) {
     
        QTrafficHots qTrafficHots = QTrafficHots.trafficHots;
        BlazeJPAQuery<TrafficHots> blazeQuery = new BlazeJPAQuery<>(em, cbf).from(qTrafficHots).select(qTrafficHots);

        BooleanBuilder builder = new BooleanBuilder();
        if (StrUtil.isNotEmpty(trafficHotsQueryDTO.getAreaText())) {
            String multiPolygon = GeomTitleTypeEnum.toMultiPolygon(trafficHotsQueryDTO.getAreaText());
            Geometry geometry = GeoConvertUtil.wkt2Geometry(multiPolygon);
            BooleanExpression withinExpression = Expressions.booleanTemplate(
                    "ST_Within({0}, {1})",
                    qTrafficHots.geom,
                    geometry
            );
            builder.and(withinExpression);
        }
        PagedList<TrafficHots> trafficHots = blazeQuery
                .where(builder)
                .orderBy(qTrafficHots.id.asc())
                .fetchPage((trafficHotsQueryDTO.pageNum - 1) * trafficHotsQueryDTO.pageSize, trafficHotsQueryDTO.pageSize);
        return AjaxResult.successPage(trafficHots);
    } 

My error stack is:

type here
com.blazebit.persistence.parser.expression.SyntaxErrorException: line 1:37 no viable alternative at input 'ST_Within(trafficHots.geom,:param_0)'
    at com.blazebit.persistence.parser.expression.AbstractExpressionFactory$1.syntaxError(AbstractExpressionFactory.java:58) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.antlr.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.antlr.Parser.notifyErrorListeners(Parser.java:544) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.antlr.DefaultErrorStrategy.reportNoViableAlternative(DefaultErrorStrategy.java:310) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.antlr.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:136) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.JPQLNextParser.predicate(JPQLNextParser.java:9054) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.JPQLNextParser.parsePredicate(JPQLNextParser.java:815) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.expression.AbstractExpressionFactory$5.invokeRule(AbstractExpressionFactory.java:102) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.expression.AbstractExpressionFactory.createExpression(AbstractExpressionFactory.java:179) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.expression.AbstractExpressionFactory.createBooleanExpression(AbstractExpressionFactory.java:253) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.expression.AbstractCachingExpressionFactory$5.get(AbstractCachingExpressionFactory.java:77) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.expression.AbstractCachingExpressionFactory.getOrDefault(AbstractCachingExpressionFactory.java:158) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.parser.expression.AbstractCachingExpressionFactory.createBooleanExpression(AbstractCachingExpressionFactory.java:146) ~[blaze-persistence-core-parser-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.impl.JpqlMacroAwareExpressionFactory.createBooleanExpression(JpqlMacroAwareExpressionFactory.java:145) ~[blaze-persistence-core-impl-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.impl.AbstractCommonQueryBuilder.setWhereExpression(AbstractCommonQueryBuilder.java:1503) ~[blaze-persistence-core-impl-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.impl.AbstractFullQueryBuilder.setWhereExpression(AbstractFullQueryBuilder.java:90) ~[blaze-persistence-core-impl-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer$WhereBuilderExpressionSetter.setExpression(BlazeCriteriaBuilderRenderer.java:821) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer$WhereBuilderExpressionSetter.setExpression(BlazeCriteriaBuilderRenderer.java:815) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer.setExpressionSubqueries(BlazeCriteriaBuilderRenderer.java:835) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer.renderWhere(BlazeCriteriaBuilderRenderer.java:431) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer.access$800(BlazeCriteriaBuilderRenderer.java:106) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer$1.visit(BlazeCriteriaBuilderRenderer.java:260) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.querydsl.core.types.SubQueryExpressionImpl.accept(SubQueryExpressionImpl.java:57) ~[querydsl-core-5.0.0.jar:na]
    at com.querydsl.core.support.FetchableSubQueryBase.accept(FetchableSubQueryBase.java:150) ~[querydsl-core-5.0.0.jar:na]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer.serializeSubQuery(BlazeCriteriaBuilderRenderer.java:131) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.BlazeCriteriaBuilderRenderer.render(BlazeCriteriaBuilderRenderer.java:127) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.AbstractBlazeJPAQuery.getQueryable(AbstractBlazeJPAQuery.java:223) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.AbstractBlazeJPAQuery.getFullQueryBuilder(AbstractBlazeJPAQuery.java:214) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]
    at com.blazebit.persistence.querydsl.AbstractBlazeJPAQuery.fetchPage(AbstractBlazeJPAQuery.java:197) ~[blaze-persistence-integration-querydsl-expressions-1.6.6.jar:1.6.6]

I don't know, I passed two parameters and "{0}" was also replaced. I don't understand where the problem occurred or if there was a problem with my usage. I hope a teacher can help me solve it,Thank you

0

There are 0 best solutions below