【问题标题】:R2DBC Querying From Multiple Tables With Sorting and PaginationR2DBC 通过排序和分页从多个表中查询
【发布时间】:2022-12-11 06:09:56
【问题描述】:

我正在尝试使用 spring webflux 创建端点。从多个表中查询的端点结果,where 子句中的大多数值是可选的。 (示例查询在底部提供)。 排序列和方向由用户提供,与分页相同。
我尝试将本机查询与 Sort、Pageable 一起使用。但是,Sort 和 Pageable (org.springframework.data.domain) 被忽略了。后来使用了没有Sort,Pageable的完全原生查询,但是无法通过参数注入ASC和DESC来查询。我还有其他选择吗?

SELECT u.id, u.catalog_id, u.amount , u.currency , u.created_date , cc.customer_id , c.country
FROM user u join catalog c ON u.catalog_id = c.id 
JOIN catalog_contract cc ON cc.id  = c.catalog_contract_id 
where 
(:user_country_id is null OR u.user_country_id = :user_country_id)
AND
(:customer_id is null or cc.customer_id = :customer_id)
ORDER BY :column :direction
OFFSET :offset LIMIT :limit
  • spring-data-r2dbc:1.3(Pageable 应该从 1.2 开始工作)

  • 弹簧数据-webflux:2.5.6

【问题讨论】:

    标签: spring-data spring-webflux spring-data-r2dbc r2dbc-postgresql


    【解决方案1】:

    由于您正在使用参数绑定并且您的参数显然是字符串,因此它将被视为字符串并用单个配额包装。所以你得到

    ORDER BY 'your-column' 'ASC'
    

    代替

    ORDER BY your-column ASC
    

    作为一种解决方法,您可以手动构建 SQL 以连接 Order 参数而不是绑定。

    【讨论】:

      猜你喜欢
      • 2017-10-01
      • 2021-09-25
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2018-06-27
      • 1970-01-01
      相关资源
      最近更新 更多