繁体   English   中英

如何在 Spring Data Jpa @Query Annotation 中进行小数精度

[英]How to do decimal precision in Spring Data Jpa @Query Annotation

我正在尝试在查询注释中执行以下查询。 我正在使用 postgresSQL。 但是,如果我在查询中使用“::numeric(10, 2)”,则在“:”处或附近出现语法错误。 但是如果我删除 "::numeric(10, 2)" 这个,它工作正常。

@Query(value = "SELECT AVG(feedback_rating)::numeric(10, 2) FROM app_customer_feedback WHERE " +
        "created_date >= to_timestamp(:dateFrom, 'yyyy-mm-dd hh24:mi:ss') AND " +
        "created_date < to_timestamp(:dateTo, 'yyyy-mm-dd hh24:mi:ss')", nativeQuery = true)
Double getAverageByDateRange(@Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

谁能告诉我如何解决这个问题? 谢谢!

冒号需要转义!

解决方案 1:转义冒号
每个:都需要替换为\\:

AVG(feedback_rating)\\:\\:numeric(10, 2)
@Query(value = "SELECT AVG(feedback_rating)\\:\\:numeric(10, 2) FROM app_customer_feedback WHERE " +
        "created_date >= to_timestamp(:dateFrom, 'yyyy-mm-dd hh24:mi:ss') AND " +
        "created_date < to_timestamp(:dateTo, 'yyyy-mm-dd hh24:mi:ss')", nativeQuery = true)
Double getAverageByDateRange(@Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

解决方案2:双冒号
每个:都需要替换为双冒号::

AVG(feedback_rating)::::numeric(10, 2)
@Query(value = "SELECT AVG(feedback_rating)::::numeric(10, 2) FROM app_customer_feedback WHERE " +
        "created_date >= to_timestamp(:dateFrom, 'yyyy-mm-dd hh24:mi:ss') AND " +
        "created_date < to_timestamp(:dateTo, 'yyyy-mm-dd hh24:mi:ss')", nativeQuery = true)
Double getAverageByDateRange(@Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

解决方案 3:使用Cast而不是冒号

cast(AVG(feedback_rating) as numeric(10, 2))
@Query(value = "SELECT cast(AVG(feedback_rating) as numeric(10, 2)) FROM app_customer_feedback WHERE " +
        "created_date >= to_timestamp(:dateFrom, 'yyyy-mm-dd hh24:mi:ss') AND " +
        "created_date < to_timestamp(:dateTo, 'yyyy-mm-dd hh24:mi:ss')", nativeQuery = true)
Double getAverageByDateRange(@Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM