如何创建自定义字段以在 REVINFO table 中存储用户凭据
How do I create custom field to store user credentials in REVINFO table
我们正在使用 hibernate-envers 并使用 *_AUD table 来存储实体的历史状态。还有一个全局 REVINFO table,其中包含修订号、时间戳。
我需要在 REVINFO table 中添加用户作为字段。如何在 REVINFO table 中添加 "user" 字段?
您绝对可以创建自定义 RevisionInfo 实体。自定义修订实体必须具有带注释的整数值唯一 属性(最好是主 ID){@link RevisionNumber} 和带注释的长值 属性 {@link RevisionTimestamp}.
{@link DefaultRevisionEntity} 已有这两个字段,因此您可以扩展它,但您也可以从头开始编写自己的修订实体。因此,在您的情况下,修订实体可能如下所示:
@Entity
@RevisionEntity()
public class RevisionsInfo extends DefaultRevisionEntity {
private Long userId;
public Long getUserId() { return userId; }
public void setUserId(final Long uid) { this.userId = uid; }
}
除此之外,您还可以为任何其他特殊需要提供自定义 RevisionListener。请参阅以下示例:
public class RevisionListener implements org.hibernate.envers.RevisionListener
{
/**
* {@inheritDoc}
*/
public void newRevision(final Object revisionInfo)
{
// updateInfo your info here if required
}
}
自定义 RevisionListener 可以作为 RevisionEntity 注释的参数提供。
@RevisionEntity(RevisionListener.class)
我们正在使用 hibernate-envers 并使用 *_AUD table 来存储实体的历史状态。还有一个全局 REVINFO table,其中包含修订号、时间戳。
我需要在 REVINFO table 中添加用户作为字段。如何在 REVINFO table 中添加 "user" 字段?
您绝对可以创建自定义 RevisionInfo 实体。自定义修订实体必须具有带注释的整数值唯一 属性(最好是主 ID){@link RevisionNumber} 和带注释的长值 属性 {@link RevisionTimestamp}.
{@link DefaultRevisionEntity} 已有这两个字段,因此您可以扩展它,但您也可以从头开始编写自己的修订实体。因此,在您的情况下,修订实体可能如下所示:
@Entity
@RevisionEntity()
public class RevisionsInfo extends DefaultRevisionEntity {
private Long userId;
public Long getUserId() { return userId; }
public void setUserId(final Long uid) { this.userId = uid; }
}
除此之外,您还可以为任何其他特殊需要提供自定义 RevisionListener。请参阅以下示例:
public class RevisionListener implements org.hibernate.envers.RevisionListener
{
/**
* {@inheritDoc}
*/
public void newRevision(final Object revisionInfo)
{
// updateInfo your info here if required
}
}
自定义 RevisionListener 可以作为 RevisionEntity 注释的参数提供。
@RevisionEntity(RevisionListener.class)