审核表已删除记录

时间:2012-11-22 08:24:31

标签: java jpa audit

使用

  

HistoryPolicy

  

DescriptorCustomizer

如何从“主表”中删除时将记录插入“审计表”?

目前,我正在使用一个简单的用户表作为“主表”,我有以下详细信息:

一个。 Java编码:

@MappedSuperclass
@EntityListeners(com.sfw.entity.TrackingListener.class)
public class BaseEntity implements Serializable,DescriptorCustomizer {
    @Override
    public void customize(ClassDescriptor descriptor) {
        String tblNm = descriptor.getTableName();
        String trckTblNm = tblNm.substring(0,tblNm.indexOf("_")) + "_TT";
        HistoryPolicy policy = new HistoryPolicy();
        policy.addHistoryTableName(tblNm,trckTblNm);
        policy.addStartFieldName("TRACK_START");
        policy.addEndFieldName("TRACK_END");
        descriptor.setHistoryPolicy(policy);
    }
}


B.审计表栏

| cre_tms             | upd_tms             | upd_usr | version | usr_act 
| track_start         | track_end           | user_id | username


C.新用户创建时的示例数据

| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 | demo2   |       1 | A       
| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 |      12 | demo3


D.用户创建然后更新后的示例数据

| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 | demo2   |       1 | A       
| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 |      12 | demo3
| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 | demo2   |       2 | U       
| 2012-11-22 13:33:23 | NULL                |      12 | demo3updated


E.用户创建,更新,然后删除后的样本数据

| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 | demo2   |       1 | A       
| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 |      12 | demo3
| 2012-11-22 13:28:08 | 2012-11-22 13:33:59 | demo2   |       2 | U       
| 2012-11-22 13:33:23 | 2012-11-22 13:33:59 |      12 | demo3updated


F. 审计表的期望输出

| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 | demo2   |       1 | A       
| 2012-11-22 13:28:08 | 2012-11-22 13:33:23 |      12 | demo3
| 2012-11-22 13:28:08 | 2012-11-22 13:33:59 | demo2   |       2 | U       
| 2012-11-22 13:33:23 | 2012-11-22 13:33:59 |      12 | demo3updated
| 2012-11-22 13:28:08 | 2012-11-22 13:34:59 | demo2   |       3 | D       
| 2012-11-22 13:33:59 | 2012-11-22 13:34:59 |      12 | demo3updated

删除记录时,只更新track_end字段(E点)
所需的输出是使用不同的版本插入一个记录(我使用@Version) 对于usr_act,该值从xhtml中的文本字段传递
这有可能吗?

0 个答案:

没有答案