为了账号安全,请及时绑定邮箱和手机立即绑定

使用Hibernate从PostgreSQL中的JSONArray获取对象的问题

使用Hibernate从PostgreSQL中的JSONArray获取对象的问题

开心每一天1111 2021-09-12 20:00:01
我想在 Spring Boot 应用程序中使用休眠从 PostgreSql 数据库的查询返回值的 JsonArray 中检索一个对象。但是我面临一个异常,“>”是意外标记,尽管我的查询在 pgAdmin4 查询工具中运行良好,以下是我的代码片段。@PersistenceContextprivate EntityManager entityManager;@Transactionalpublic String getItemById(Long id) {    String result = (String) entityManager.createQuery("SELECT JSON_AGG(items)->>0 AS item FROM items WHERE id=:id").setParameter("id", id)            .getResultList().get(0);    System.out.println(result);    return result;}异常如下:org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: > near line 1, column 24 [SELECT JSON_AGG(items)->>0 AS item FROM items WHERE id=:id]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: > near line 1, column 24 [SELECT JSON_AGG(items)->>0 AS item FROM items WHERE id=:id]    at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:367)请帮助实现这一目标或建议我在不更改查询的情况下解决问题。提前致谢。
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

您使用的 API 方法 ( entityManager.createQuery(String)) 是执行 javadoc 中所述的 JPQL 查询:

创建 Query 实例以执行 Java Persistence 查询语言语句。

您要执行的查询是 SQL 查询。您应该使用 上的createNativeQuery(String)方法EntityManager


查看完整回答
反对 回复 2021-09-12
  • 1 回答
  • 0 关注
  • 255 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信