Таблица аудита для удаления записи
С помощью
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);
}
}
Б. Столбец таблицы аудита
| 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.
Это вообще возможно?