Исключение при считывании истории аудита Hibernate - PullRequest
0 голосов
/ 16 мая 2018

Я настроил аудит через библиотеку hibernate-envers, и он работал нормально, пока я не захотел прочитать историю через API AuditReader.

Это код:

AuditReader auditReader = AuditReaderFactory.get(entityManager);
List<Number> revisionNumbers = auditReader.getRevisions(Queue.class, queue.getId());
        for (Number rev : revisionNumbers) {
            Queue auditedQueue = auditReader.find(Queue.class, queue.getId(), rev);
            audQueues.add(auditedQueue);
        }

Вышло исключениеis org.postgresql.util.PSQLException: ОШИБКА: оператор не существует: smallint <> bytea Подсказка: ни один оператор не соответствует данному имени и типу (аргументам) аргумента.Возможно, вам придется добавить явные приведения типов.Позиция: 879

Я настроил ведение журнала sql и вижу сбойный запрос:

select queue_aud0_.ID as ID12_, queue_aud0_.REV as REV12_, queue_aud0_.REVTYPE as REVTYPE12_ from CMSMS_QUEUE_AUD queue_aud0_ where (queue_aud0_.REV=(select max(queue_aud1_.REV) from CMSMS_QUEUE_AUD queue_aud1_ where (queue_aud1_.REV<=? )and(queue_aud0_.ID=queue_aud1_.ID )))and(queue_aud0_.REVTYPE<>? )and(queue_aud0_.ID=? )

Выбрано больше столбцов, но они сейчас не важны ... Используемые параметрыhibernate:

bindNamedParameters() TEST_NEW -> _p1 [3]
bindNamedParameters() DEL -> _p0 [2]
bindNamedParameters() 5 -> revision [1]

Я попытался выполнить запрос с этими параметрами, и он выдает то же исключение.Причина в том, что второй параметр queue_aud0_.REVTYPE <>? , потому что hibernate пытается установить там строку 'DEL', в то время как REVTYPE - smallint.Это странно, потому что таблицы были автоматически сгенерированы hibernate ... Любая идея, почему он это делает ??

Я использую версию 4.2.0.Final

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-envers</artifactId>
    <version>4.2.0.Final</version>
</dependency>

1 Ответ

0 голосов
/ 18 мая 2018

Немного поиграв с зависимостями, теперь работает. Я переключил Hibernate на 5.3.0.Final и SpringFramework на 5.0.5.RELEASE. Также пришлось удалить некоторую зависимость JPA, которая была избыточной. Не могу точно сказать, что решило проблему, так как мне пришлось изменить все эти зависимости вместе, чтобы даже запустить приложение.

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