【问题标题】:Add additional column in audit table with hibernate envers使用休眠环境在审计表中添加附加列
【发布时间】:2014-10-13 15:50:14
【问题描述】:

是否可以在审计表中添加额外的列? 例如我有一个这样的表

@Entity
@Table(name="EmpEnverPrac")
@Audited
public class EmpEnverPractice {


        @Id
        @Column(name="ID") 
        @GeneratedValue(strategy  = GenerationType.AUTO)
        private Integer id; 

        @Column(name="NAME") 
        private String name; 

        @Column(name="password")
        @NotAudited
        private String password; 

     // getter and setters

}

现在我想要在生成的审计表中添加一些额外的列,但我不想将它们包含在我的实体中。我无法为这个要求找到任何解决方案。请告诉我所需的配置。提前致谢

【问题讨论】:

    标签: hibernate hibernate-envers


    【解决方案1】:

    我找到了满足我要求的解决方法,因为我可以在 REVINFO 表中添加额外的列(默认名称由休眠提供)。该表为应用程序中的每个事务存储带有时间戳的 ID,因此我可以获得有关任何事务的信息。参考可以在这里http://docs.jboss.org/envers/docs/#revisionlog

    【讨论】:

    • 这将创建一个新的 rev 表,并且无法找出该 rev 表中的 ID 属于哪个事务。有没有办法查出来?
    【解决方案2】:

    从技术上讲,这是一个奇怪的要求,请检查您的业务和设计,如果您需要一个基类和一个扩展类的概念:EmpEnverPractice,如果是,您可以将所有字段映射到子类上,并使用基类而不那些你不需要的字段。

    【讨论】:

    • @Luurence 我知道这是一个奇怪的要求,但这是我们的业务要求,我找不到任何文档。
    • @Laurence 对审计实体进行更改的当前登录用户的持久 ID 怎么样,我认为这个用例很常见,看起来并不奇怪。
    • 这根本不是什么奇怪的要求。
    • 这不是一个奇怪的要求。例如,可能需要记录在实体中没有意义的分布式跟踪。
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 2014-03-22
    • 2017-08-17
    • 2017-11-25
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多