java Hibernate环境包括更改发生的日期
我们刚刚开始使用Hibernate Envers,它可以很好地记录更改的内容,但是,有没有一种方法可以在更改发生时记录更改
那么,它可以在审计表中添加datetime列吗
根据Envers文档,默认情况下应发生以下情况:
When Envers starts a new revision, it creates a new revision entity which stores information about the revision. By default, that includes just
- revision number - An integral value (int/Integer or long/Long). Essentially the primary key of the revision
- revision timestamp - either a long/Long or java.util.Date value representing the instant at which the revision was made. When using a java.util.Date, instead of a long/Long for the revision timestamp, take care not to store it to a column data type which will loose precision.
因此,我的理解是,获取修订时间戳不需要任何必需的操作。但是,在我的例子中,envers创建的表中没有修订时间戳
谢谢
# 1 楼答案
有一个由envers自动创建的表,名为:REVINFO,其中包含时间戳
它包含REV,作为“\u AUD”表中的修订编号。 此编号在所有“\u AUD”表格之间是唯一的
见第15.8段。了解中的Envers模式 https://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch15.html
# 2 楼答案
您需要定义一个由Envers使用的自定义修订实体,以便添加所需的属性。有必要对假装用作自定义修订图元的类进行注释:
@RevisionEntity(AuditingRevisionListener.class)
在该实体中,您可以定义所需内容。例如,这应该是一个很好的起点:
此外,还必须定义一个修订侦听器,以处理如何在自定义修订实体中初始化数据。您的侦听器必须实现RevisionListener
请记住,这些类必须可由hibernate访问,请选中此项:Why Hibernate Envers is ignoring my custom RevisionEntity?
# 3 楼答案
这对我很有用: