1

使用する

沿革ポリシー

記述子カスタマイザー

「メインテーブル」から データが削除されたときに、「監査テーブル」にレコードを挿入するにはどうすればよいですか?

現在、「メインテーブル」として単純なユーザーテーブルに取り組んでおり、詳細として次のものがあります。

A. 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)
望ましい出力は、別のバージョンで挿入されたレコードをもう 1 つ持つことです (これには @Version を使用します)
usr_act の場合、値は xhtml のテキストフィールドから渡されます

これはまったく可能ですか?

4

0 に答える 0