Postgresql - исключение синтаксиса запроса Hibernate: org.hibernate.hql.ast.QuerySyntaxException: неожиданный токен в ближайшем - PullRequest
0 голосов
/ 09 октября 2018

Я использую Postgresql с Hibernate.now() работает нормально, но now() в часовом поясе UTC выдает ошибку.

Версия: Postgresql9.5.Тот же SQL-запрос работает нормально в pgAdmin.

String sql = "SELECT a FROM XspJobRequest a " +
            "WHERE a.xspJobTypeId = :xspJobTypeId " +
            "AND a.xspJobStatusId = :xspJobStatusId " +
            "AND a.nextAttemptTs < (now() at time zone 'utc') " +
            " ORDER BY a.insertTs";
    try
    {
        Query query = entityManager.createQuery(sql);
        query.setMaxResults(limitReturnCount);
        query.setParameter("xspJobTypeId", jobType.getId());
        query.setParameter("xspJobStatusId", XspJobStatusEnum.eNew.getId());
        List<XspJobRequest> retval = query.getResultList();

        if (!alreadyActive)
        {
            et.commit();
        }
        return retval;
    }

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: неожиданный токен: около строки 1, столбец 167[ВЫБРАТЬ ИЗ com.hp.jampub.db.entity.XspJobRequest a WHERE a.xspJobTypeId =: xspJobTypeId AND a.xspJobStatusId =: xspJobStatusId И a.nextAttemptTs <(выберите сейчас ()) во временной зоне.insertTs] </p>

1 Ответ

0 голосов
/ 09 октября 2018

Комментарий Билли Фроста верен.Вы можете создать новый параметр Date вместо использования now() at time zone 'utc'

...