簡體   English   中英

Spring 數據 jdbc 拼寫

[英]Spring data jdbc spel

I tried to play with spring data jdbc after several month of spring data mongodb and jpa... And my surprise... I don't find my favorite function easily: Example, Predicate, Spel...

所以,此時,我試圖讓@query 與 spel 一起工作......我有一個疑問......它存在????

2020-06-25 18:45:47.566 ERROR [,,,] 15472 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter '#{#query.lastname}': No value registered for key '#{#query.lastname}'] with root cause

org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter '#{#query.lastname}': No value registered for key '#{#query.lastname}'

我的要求很簡單:

 public interface UserRepository extends PagingAndSortingRepository<User, Long> {

    User findByLastname(String lastname);

    @Query("select * from USER where lastname= :#{#query.lastname} and firstname= :#{#query.firstname} and age=:#{#query.age}")
    Page<User> findBySearchUserQuery(@Param("query") SearchUserQuery query, Pageable page);

}

謝謝你的幫助,尼科

截至目前 Spring(直到 Spring 數據 JDBC 2.1)@Query 僅支持命名參數,不支持在 @Query 中使用 SEL。 最簡單的解決方案是為查詢方法提供所有參數。

@Query("select u from USER as u where u.lastname= :lastname and u.firstname= :firstname and u.age=:age")
Page<User> findBySearchUserQueryParams(String firstname, String lastname, int age, Pageable page);

Spring 數據 jdbc 參考文檔

您不應該在查詢中寫 [*],而是將 class 命名為某個名稱並返回它

您的查詢將是這樣的

 @Query("select u from USER as u where u.lastname= :#{#query.lastname} and u.firstname= :#{#query.firstname} and u.age=:#{#query.age}")
    Page<User> findBySearchUserQuery(@Param("query") SearchUserQuery query, Pageable page);

暫無
暫無

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

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