我的项目正在从Grails迁移到Java,因此我在Grails Audit插件推送的单个表中提供了现有的审计数据,现在我在Java中使用Java envers进行审计。我有些疑惑:
- >如果我想手动将数据从单个表推送到不同的审计表(在Java中),如何手动生成历史数据的修订表的主键,这不会与从Java注释生成的主键冲突? 至于新条目,我正在生成主键,如下所示:
@Id
@GeneratedValue
@RevisionNumber
@Column(name = "ID") @NotNull
private Long revisionId;
- >是否有其他方法将数据从单个审计表推送到隔离的审计表(在java中)而不是手动执行?
请让我知道这件事。
感谢。
答案 0 :(得分:0)
Envers应该在Oracle上创建名为 REVISION_LISTENER 的序列。
因此,您应该能够使用Oracle的语法SELECT REVISION_LISTENER.NEXTVAL
来获取下一个序列值,并在审计表和修订实体信息的REV
字段中使用它表也是。
这仅适用于DefaultAuditStrategy
。
如果您打算使用ValidityAuditStrategy
,还有其他字段,您必须了解Envers的内部,以便能够填充相关字段。如果您正在使用此策略,请告诉我,我会添加更多特定于此的详细信息,但它非常复杂且非常繁琐。