【问题标题】:How to sort spring data jpa repository on character varying column如何在字符变化列上对spring数据jpa存储库进行排序
【发布时间】:2018-08-17 11:37:43
【问题描述】:

您好,我们在 java 中使用 postgress 数据库和 spring data jpa 存储库来使用数据。现在我们有一列(版本)类型为“字符变化(255)”,列的数据为val1 = 11.0.2000.78val2 = 11.0.2000.301

当我们使用 spring data jpa 存储库触发降序排序查询时,它会在 val2 上方列出值 val1。实际上它应该在val1 上方列出val2

我们知道,由于列是字符类型,因此它认为 7 大于 3,所以问题就在于此。有什么解决办法吗?

我们希望对此类值的字符类型列进行数字排序。 spring data jpa repository有什么办法处理吗?

【问题讨论】:

标签: spring jpa spring-data-jpa spring-repositories


【解决方案1】:
CREATE TABLE tableone
(
    test text
) ;


INSERT INTO tableone(test) VALUES('11.0.2000.78');
INSERT INTO tableone(test) VALUES('11.0.2000.301');


select * from tableone order by test desc;

SELECT
   test
FROM
    tableone order by 
    ( CAST(
        COALESCE(
            NULLIF(
                replace(test, '.', ''), 
                ''),
            '0') 
       AS numeric) ) desc;

【讨论】:

  • 感谢阿米特,当我在数据库上触发它时,它可以直接工作,但是由于我们使用的是 jpa 规范,所以我不能像你提到的那样在那里编写自定义查询。所以我正在考虑在java端通过它的一个变量来实现排序 List 。如果您对此有任何想法,请提出建议
  • JPA 支持原生查询。 (在服务器内存中排序不是最有效的方法。例如,如果您需要基于某种排序的前 5 条记录怎么办。您最终会获取内存中的所有记录。)
猜你喜欢
  • 2020-08-24
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 2021-01-29
  • 2017-05-26
  • 2019-12-22
  • 2019-11-20
  • 2021-08-10
相关资源
最近更新 更多