繁体   English   中英

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

[英]java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty

我目前收到有关我的 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 8 之后的版本,您必须将其粘贴到 Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler:

-parameters

在 gradle.build 中:

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

使用@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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM