簡體   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