【发布时间】:2021-09-08 19:23:50
【问题描述】:
表:
ID Code
1 Health
2 Freeze
3 Phone
4 Phone
5 Health
6 Hot
按字符串原始查询列表排序:
select * from table
order by FIELD(Code, 'Health', 'Phone', 'Freeze', 'Hot')
我想将此原始查询转换为 JPA 查询,但找不到任何方法。请帮帮我!
注意:我使用的环境
- MySQL 版本:8.0.25
- Spring Boot 2.5 版
- Java 11
更新 1:条件 FIELD(Code, 'Health', 'Phone', 'Freeze', 'Hot') 应该是一个列表。将此原始查询转换为 JPA 查询时,我还想传递一个列表
更新 2:感谢@TimBiegeleisen 的回答和评论,我意识到 JPA 不适合我的问题。
【问题讨论】:
-
您无法将 Java 字符串列表转换为您在 JPA 查询中需要的
CASE表达式。 JPA 查询由准备好的语句支持,查询的结构(但不是文字值)必须是硬编码和固定的。 -
@TimBiegeleisen 感谢您的评论。请将此添加到答案中,以便我接受它作为最有帮助的答案!
标签: mysql spring-boot jpa spring-data-jpa java-11