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

vql8enpb  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(527)

我当前收到有关订购的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

要传递到查询中的值city,然后根据该值对信息进行排序。在这种情况下,我将如何为我现有的jpql传入@param以将其启用为1。只工作2分钟。允许订购。谢谢您。

dced5bon

dced5bon1#

使用 @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 orderingAll(@Param("ordering") String ordering, Pageable pageable);

oyjwcjzk

oyjwcjzk2#

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

-parameters

在gradle.build中:

compileJava {
    options.compilerArgs << '-parameters'
}

相关问题