使用する
沿革ポリシー
と
記述子カスタマイザー
「メインテーブル」から
データが削除されたときに、「監査テーブル」にレコードを挿入するにはどうすればよいですか?
現在、「メインテーブル」として単純なユーザーテーブルに取り組んでおり、詳細として次のものがあります。
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 のテキストフィールドから渡されます
これはまったく可能ですか?