Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hibernate从PostgreSQL中的JSONArray获取对象时出现问题_Java_Json_Postgresql_Hibernate_Spring Boot - Fatal编程技术网

Java 使用Hibernate从PostgreSQL中的JSONArray获取对象时出现问题

Java 使用Hibernate从PostgreSQL中的JSONArray获取对象时出现问题,java,json,postgresql,hibernate,spring-boot,Java,Json,Postgresql,Hibernate,Spring Boot,我想在SpringBoot应用程序中使用hibernate从PostgreSql数据库中的JsonArray查询返回值中检索一个对象。但是我面临一个异常,“>”是意外的标记,尽管我的查询在pgAdmin4查询工具中工作得很好,下面是我的代码片段 @PersistenceContext private EntityManager entityManager; @Transactional public String getItemById(Long id) { String result

我想在SpringBoot应用程序中使用hibernate从PostgreSql数据库中的JsonArray查询返回值中检索一个对象。但是我面临一个异常,“>”是意外的标记,尽管我的查询在pgAdmin4查询工具中工作得很好,下面是我的代码片段

@PersistenceContext
private EntityManager entityManager;

@Transactional
public 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)

请帮助实现这一点,或建议我在不更改查询的情况下解决问题。提前谢谢

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

创建用于执行Java持久性查询语言语句的查询实例


要执行的查询是SQL查询。您应该在
EntityManager
上使用
createNativeQuery(String)
方法您正在使用的API方法(
EntityManager.createQuery(String)
)是执行javadoc中所述的JPQL查询:

创建用于执行Java持久性查询语言语句的查询实例


要执行的查询是SQL查询。您应该使用
EntityManager

上的
createNativeQuery(String)
方法
JSON\u AGG(items)->0
syntax?一个postgres实用程序函数将查询结果转换为对象的JSON数组。我知道
JSON\u AGG
函数是什么。但是
->0
的作用是什么?我不知道那个语法。显然,postgres也是…从json数组中检索第一个对象什么是
json_AGG(items)->>0
语法?一个postgres实用函数,用于将查询结果转换为json对象数组。我知道
json_AGG
函数是什么。但是
->0
的作用是什么?我不知道那个语法。显然,postgres还需要从json数组中检索第一个对象