2012-10-20 115 views
0

我正在使用hibernate,并且我有一张表,它不断由登录到Web应用程序的各种用户更新。我想在该表中添加“上次更新时间”和“上次更新时间”列。对于时间戳位,我可以简单地使用触发器并从oracle获取时间/日期,但对于“上次更新者”,应该从应用程序层获取数据。跟踪行的“上次更新者”

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

有没有其他办法可以实现这一目标?

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

回答

1

如果你是一个Spring和JPA的用户,正好有你需要的东西:2.6. Auditing

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

所有你需要做的是:

  • 实现Auditable接口,它暴露了修改列

  • 实现简单Auditor界面,让框架知道谁是当前登录:

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