跟踪一行的“最后更新时间”

时间:2012-10-20 11:54:15

标签: hibernate

我正在使用hibernate,并且我有一个表,该表由Web应用程序中登录的各种用户不断更新。我想在该表中添加“last updated by”和“last update time”列。对于timestamp位,我可以简单地使用触发器并从oracle获取时间/日期,但对于“last updated by”,应该从应用程序层获取数据。

一种方法是明确识别修改该实体的所有场景,并添加entity.setLastUpdatedBy(用户名)或类似的东西,但这意味着我必须识别所有这些场景。实体可能会被修改。

还有其他方法可以实现吗?

ps:我的问题与this problem非常相似,但我找不到答案。问题中提到的链接不起作用。

1 个答案:

答案 0 :(得分:1)

如果您是Spring和JPA用户,正是您所需要的:2.6. Auditing

  

大多数应用程序都需要某种形式的可审计性来跟踪实体的创建或修改时间以及由谁来实现。

您所要做的就是:

  • 实现基本公开修改列的Auditable接口

  • 实现简单的Auditor接口,让框架知道当前登录的人:

    public interface AuditorAware<T, ID extends Serializable> {
    
        T getCurrentAuditor();
    }