Java Hibernate审核历史记录读取器异常

Java Hibernate审核历史记录读取器异常,java,postgresql,hibernate,hibernate-envers,Java,Postgresql,Hibernate,Hibernate Envers,我通过HibernateEnvers库配置了审计,它工作正常,直到我想通过AuditReaderAPI读取历史记录 代码如下: AuditReader auditReader = AuditReaderFactory.get(entityManager); List<Number> revisionNumbers = auditReader.getRevisions(Queue.class, queue.getId()); for (Number rev : revi

我通过HibernateEnvers库配置了审计,它工作正常,直到我想通过AuditReaderAPI读取历史记录

代码如下:

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);
        }
我尝试使用这些参数运行查询,但它抛出了相同的异常。原因是第二个参数queue\u aud0\u0.REVTYPE?,因为hibernate试图在REVTYPE为smallint时设置'DEL'字符串。这很奇怪,因为这些表是由hibernate自动生成的。。。你知道为什么会这样吗

我使用版本4.2.0.Final

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

org.hibernate
冬眠使者
4.2.0.4最终版本

在玩了一点依赖项之后,它现在可以工作了。我将Hibernate切换到5.3.0.Final,将SpringFramework切换到5.0.5.RELEASE。还删除了一些冗余的JPA依赖项。无法确切说明是什么解决了问题,因为我必须将这些依赖项一起更改,以便运行应用程序。

它不是绑定到字符串,而是绑定到枚举。Hibernate在日志中放置的是枚举值,在本例中,您正在运行的
#getRevisions
查询过滤掉REVTYPE=(2/DEL)条目。至于查询失败的原因,可能是该版本中的枚举处理存在问题。我假设您也在使用hibernate core 4.2.0.Final?是的,我在Maven依赖项中看到了hibernate core 4.2.0.Final(虽然我没有在pom.xml中设置它,所以我猜它是其他依赖项的子项)。无论如何,这真的很奇怪,因为审计编写工作正常,它将枚举值设置为数字,但此选择操作将其设置为字符串…您是否可以尝试使用更新的版本?版本4.2不再被开发或维护。谢谢。我玩了一点依赖关系,现在它工作了。我将Hibernate切换到5.3.0.Final,将SpringFramework切换到5.0.5.RELEASE,并删除了一些可能是多余的JPA依赖项。现在似乎奏效了:)
bindNamedParameters() TEST_NEW -> _p1 [3]
bindNamedParameters() DEL -> _p0 [2]
bindNamedParameters() 5 -> revision [1]
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-envers</artifactId>
    <version>4.2.0.Final</version>
</dependency>