簡體   English   中英

Spring Data JPA ['where 子句'中的未知列'...']

[英]Spring Data JPA [Unknown column '...' in 'where clause']

我正在研究 Spring 項目和 MySQL 數據庫系統。

我有一個包含此列“list_id”的表,並且我在 Java 類中有此列的此變量。 但是,正如您所看到的,這兩個名稱是不同的:

    @Column(name = "list_id")
    private int listId;

我正在做這個查詢:

   @Query(value="select * from words_list WHERE list_id=listId", nativeQuery=true)
   List<WordList> neverTested(@RequestParam("listId") int listId);

我嘗試將它們放入控制器類

    public List<WordList> neverTested(@RequestParam int listId){

    return wordListRepository.neverTested(listId);
}

我總是收到這個錯誤:

java.sql.SQLSyntaxErrorException: Unknown column 'listId' in 'where clause'

即使我確定我的方式,但聽起來名字的問題

在 listId 之前添加一個“:”,如下所示:

 @Query(value="select * from words_list WHERE list_id = :listId", nativeQuery=true)
   List<WordList> neverTested(@RequestParam("listId") int listId);

你必須像這樣在參數前寫一個冒號

 @Query(value="select * from words_list WHERE list_id=:listId", nativeQuery=true)

使用org.springframework.data.repository.query.@Param將方法參數傳遞給查詢,而不是org.springframework.web.bind.annotation.@RequestParam


@Query 查詢字符串示例:

"select * from words_list WHERE list_id=:listId"

命名參數在查詢字符串中由冒號后跟參數名稱指示。

結合@Query 和@Param 注釋的示例:

@Query(value="select * from words_list WHERE list_id=:listId", nativeQuery=true)
List<WordList> neverTested(@Param("listId") int listId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM