【发布时间】:2016-12-08 07:58:23
【问题描述】:
我正在使用 Hibernate Envers 作为我的修订历史记录。 这是我的餐桌设置:
CREATE TABLE EPIC (
epicid SERIAL NOT NULL,
accountid BIGINT NOT NULL,
description TEXT NOT NULL UNIQUE,
epicowner TEXT NOT NULL,
PRIMARY KEY(epicid)
);
CREATE TABLE EPIC_AUD(
epicid BIGINT NOT NULL ,
REV BIGINT NOT NULL,
accountid BIGINT,
description TEXT,
epicowner TEXT,
REVTYPE BIGINT,
PRIMARY KEY(epicid,REV)
);
目前,当我进行更改时,它只保存复合主键值和修订类型。由于我还想记录删除某些实体的用户,所以我也想保存该值。这是我用于删除实体的代码。
@Override
public boolean deleteItem(Epic epicFromFrontend) {
transactionBegin();
Epic epicToRemove = getEntityManager().find(Epic.class, epicFromFrontend.getEpicid());
epicToRemove.setAccountid(epicFromFrontend.getAccountid());
getEntityManager().remove(epicToRemove);
return transactionEnd();
}
其实我有两个问题:
- 如何也保存 accountid
- 或者保存所有数据可能更聪明更好。所以删除后我的 EPIC_AUD 表中没有空字段。
【问题讨论】:
-
如果我理解正确的话,docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/… 这样的东西可能会帮助你实现你想要的。
-
感谢您的回复,但我已经找到了。但是我不是这个的忠实粉丝,因为这意味着我必须创建很多代码来做一件简单的事情。我想知道是否没有任何注释,例如“@Auditthisattribute”或@Auditthisfield
-
您真正要寻找的是在 RevisionEntity 级别跟踪相关内容,而不是在域实体级别跟踪值。这使您可以轻松地跟踪删除用户,而无需任何侵入性代码来操作您的域模型。
标签: java hibernate-envers