java.lang.IllegalArgumentException:参数绑定的名称不能为null或为空

问题描述 投票:1回答:2

我目前收到有关我的jqpl查询订单的错误:

Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters

我处于前一种情况,因此我需要使用@Param,但不确定如何执行此操作。目前是关于我的JPQL的情况:

@Query("SELECT p FROM DePerson p, DeClass c, DeSchool s" +
    "WHERE p.personId = c.id " +
    "AND su.schoolId = s.id " +
    "ORDER BY :ordering")
Page<DeSiteUser> orderingAll(Page page, String ordering, Pageable pageable);

所以很明显,我需要为要在订购字符串中传递的值实现@Param。我正在尝试实现的是实现一种排序方法,该方法将允许使用以下值:]

http://localhost:8080/api/person?sorting=city

要传递到查询中的值城市,然后根据该值对信息进行排序。在这种情况下,如何将现有的jpql传递给@Param,以使其能够工作1.但允许2.进行订购。谢谢。

java sql jpql
2个回答
0
投票

使用@Param("ordering")

@Query("SELECT p FROM DePerson p, DeClass c, DeSchool s" +
    "WHERE p.personId = c.id " +
    "AND su.schoolId = s.id " +
    "ORDER BY :ordering")
Page<DeSiteUser> orderingAll(@Param("ordering") String ordering, Pageable pageable);

0
投票

如果您使用Java版本晚于8,则必须将其粘贴到“设置”->“构建,执行,部署->编译器-> Java编译器:] >>

-parameters

在gradle.build中:

compileJava {
    options.compilerArgs << '-parameters'
}
    
© www.soinside.com 2019 - 2024. All rights reserved.