在Spring Boot中从函数参数中获取Concat @Query值

时间:2019-05-22 04:36:30

标签: java spring-boot jpa spring-data-jpa

我们可以从字符串中通过QUERY附加Query的值吗? 如果没有,还有其他选择吗?

注意:需要返回页面中的数据

@Query(nativeQuery = true,value =“从表实体中选择实体,其中 1 = 1“ +查询+” AND date =:date“)

页面getSearchedTable(字符串查询,@ Param(“日期”)LocalDate businessDate,可分页的可分页);

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询获取可分页的数据。谨记几点

  1. 您必须在等号和参数之间留空格,例如(data =:date)
  2. 无需提供nativeQuery = true,您可以使用实体字段
  3. 在Spring Boot中,不能在本地查询中将“ query”用作变量。您必须作为服务的参数传递。
  4. 只需在要求的查询(如select或您的要求)中传递查询参数即可。下面的例子。

@Query(value = "select entity from table entity where  1=1 AND date = :date AND query = :query")
Page<YourTableEntity> getSearchedTable(@Param("query") String query, @Param("businessDate") LocalDate businessDate, Pageable pageable);

但是,如果必须强制使用nativeQuery,则可以选择以下任意查询。


1。首选

 @Query(
      value = "select entity from table entity where  1=1 AND date = :date AND query = :query ORDER BY id", 
      countQuery = "SELECT count(*) FROM table", 
      nativeQuery = true)
      Page<YourTableEntity> getSearchedTable(@Param("query") String query, @Param("businessDate") LocalDate businessDate, Pageable pageable);

2。第二种选择

@Query(value = "select entity from table entity where  1=1 AND date = :date AND query = :query ORDER BY id \n-- #pageable\n", 
      countQuery = "SELECT count(*) FROM table",
      nativeQuery = true)
      Page<YourTableEntity> getSearchedTable(@Param("query") String query, 
      @Param("businessDate") LocalDate businessDate, Pageable pageable);