hibernate 无法检索带有spring-data-envers findLastChangeRevision的实体的修订号

hwazgwia  于 2023-11-21  发布在  Spring
关注(0)|答案(1)|浏览(158)

我尝试使用spring-data-envers中的findLastChangeRevision方法获取修订号。我能够获取最后一个实体,但修订号始终为UNKNOWN。修订号和时间戳分别为空和null始终。
尝试调试并获取所有修订版本,发现所有修订版本都是UNKNOWN,其修订版本号和时间戳分别与empty和null相同。
下面是我的AuditRevisionListener,用@RevisionNumber@RevisionTimeStamp注解了字段

@RevisionEntity(AuditRevisionListener.class)
 public class AuditRevisionEntity {

    @Id
    @GeneratedValue(generator = "revision_info_id_generator")
    @GenericGenerator(
            name = "revision_info_id_generator",
            strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
            parameters = {
                    @Parameter(name = "sequence_name", value = "revision_info_id_seq"),
                    @Parameter(name = "initial_value", value = "1"),
                    @Parameter(name = "increment_size", value = "1")
            })
    @RevisionNumber
    private Long revisionId;

    @RevisionTimestamp
    private long timestamp;

    @Column(name = "user_id")
    private Integer userId;

}

字符串
spring-boot的版本是2.6.2
已经引用了这个,和上面的上下文有点不同。这会是一个bug吗?
spring-data-envers revisionType UNKNOWN
我知道可以使用hibernate-envers获得解决方案,但考虑使用tspring-data-envers
谢谢

py49o6xq

py49o6xq1#

Hibernate可能会代理你的AuditRevisionEntity,而Spring-Data反过来会尝试使用反射来获取修订ID和时间戳的值。问题是代理对象隐藏了这些值,直到你使用getter方法。在你的修订实体上添加@Proxy(lazy = false) annotation可能会有所帮助。
请参阅此问题以供参考:https://github.com/spring-projects/spring-data-envers/issues/250

相关问题