Проблема в получении объекта из JSONArray в PostgreSQL с использованием Hibernate - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу получить объект из JsonArray с возвращаемым значением запроса из базы данных PostgreSql, используя hibernate в приложении весенней загрузки. Но я столкнулся с исключением: '>' - неожиданный токен , хотя мой запрос отлично работает в pgAdmin4 Query Tool, следующий мой фрагмент кода.

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

, пожалуйста, помогите достичь этого или предложите мне обойтись без изменения запроса. Заранее спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

Метод API, который вы используете (entityManager.createQuery(String)), заключается в выполнении запросов JPQL, как указано в javadoc:

Создание экземпляра Query для выполнения оператора языка запросов Java Persistence.

Запрос, который вы хотите выполнить, является запросом SQL.Вы должны использовать метод createNativeQuery(String) на EntityManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...