【发布时间】:2018-08-29 05:17:58
【问题描述】:
有人可以建议我如何使用 JPA Criteria builder API 构建以下查询吗?
SELECT id, name, date, version FROM public.upgradeTable
order by (CAST(replace(version, '.', '')AS numeric)) desc;
请注意,我们的版本列具有“11.0.2.213”、“11.0.2.73”等值 我们需要修剪字符 '.'在版本中,然后将它们转换为数字,然后按 desc 排序。
【问题讨论】:
-
首先是无效的JPQL,JPQL(或Criteria)中没有“替换”功能。其次,展示您迄今为止尝试过的内容,以及您遇到问题的具体部分
-
是的,我在那里搜索过,没有替换内部标准生成器。但我们的要求是对这个版本列进行排序。由于版本列是 varchar,它提供了字符串排序。因此,当使用 jpa 时,我们使用 orderList.add(cb.desc(uf.get("version")) 它基于字符串排序并在“11.0.2.213”上方列出“11.0.2.73”。要解决这个问题,我们需要删除“ .” 从版本中将其转换为数字然后排序。描述中给出的查询正在工作......在实际的 postgress 数据库上,我们需要找到任何方式或其他方式在 JPQL 或 java 中的 Critera Builder 中实现这一点。请建议跨度>
-
所以这是该问题的重复。请不要提出重复的问题
-
将删除一个。但是你能建议在标准构建器中是否有办法处理这个问题。
标签: java jpa spring-data-jpa criteria builder