手动生成Hibernate Envers主键和jpa

时间:2017-02-23 02:49:45

标签: spring-data-jpa hibernate-envers

我的项目正在从Grails迁移到Java,因此我在Grails Audit插件推送的单个表中提供了现有的审计数据,现在我在Java中使用Java envers进行审计。我有些疑惑:

- >如果我想手动将数据从单个表推送到不同的审计表(在Java中),如何手动生成历史数据的修订表的主键,这不会与从Java注释生成的主键冲突? 至于新条目,我正在生成主键,如下所示:

    @Id
    @GeneratedValue
    @RevisionNumber
    @Column(name = "ID") @NotNull
    private Long revisionId;

- >是否有其他方法将数据从单个审计表推送到隔离的审计表(在java中)而不是手动执行?

请让我知道这件事。

感谢。

1 个答案:

答案 0 :(得分:0)

Envers应该在Oracle上创建名为 REVISION_LISTENER 的序列。

因此,您应该能够使用Oracle的语法SELECT REVISION_LISTENER.NEXTVAL来获取下一个序列值,并在审计表和修订实体信息的REV字段中使用它表也​​是。

这仅适用于DefaultAuditStrategy

如果您打算使用ValidityAuditStrategy,还有其他字段,您必须了解Envers的内部,以便能够填充相关字段。如果您正在使用此策略,请告诉我,我会添加更多特定于此的详细信息,但它非常复杂且非常繁琐。