如何在 Spring Boot JPA 中按 Postgres 的 json 属性排序?

Posted

技术标签:

【中文标题】如何在 Spring Boot JPA 中按 Postgres 的 json 属性排序?【英文标题】:How to order by json property of Posgres in Spring boot JPA? 【发布时间】:2020-04-16 13:21:44 【问题描述】:

我在JPA 中写了一个@Query 以通过json 属性获取详细信息,这会导致错误。

 @Query("SELECT t FROM Tcl order by t.equipment->>'eqpm_n' ASC")
 public List<Tcl> getEquipmentList();

原因:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌

 SELECT t FROM com.target.mpe.models.Tcl order by t.equipment->>'eqpm_n' ASC

同样的查询在 Postgres 控制台中运行良好。 我怎样才能让它在 SpringBoot JPA 中工作? 我需要尝试原生查询吗?

【问题讨论】:

也许它被那个包名弄糊涂了。尝试SELECT * 仅用于测试目的。 【参考方案1】:

JPQL 不支持这种 PostgreSQL 语法。您必须使用 nativeQuery:

@Query(value = "SELECT * FROM Tcl t order by t.equipment->>'eqpm_n' ASC", nativeQuery = true)
public List<Tcl> getEquipmentList();

【讨论】:

感谢您的帮助。

以上是关于如何在 Spring Boot JPA 中按 Postgres 的 json 属性排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Data (JPA) 派生查询中按多个属性排序?

spring boot:实现jpa+thymeleaf 用户管理

spring boot:实现jpa+thymeleaf 用户管理

spring boot:实现jpa+thymeleaf 用户管理

在spring boot中使用JDBC和spring data jpa为我的会话spring创建单独的数据源

如何通过分页在 Spring Data JPA 中的 SELECT 子句中按别名对投影进行排序?