2011-01-28 33 views
6

我想知道是否有任何简单的方法来实现跟踪实体中的变化? 有Hibernate的Envers进行审计,但据我了解,它是面向Hibernate的。我在考虑是否在JPA内部有某种东西,或者没有超出规范的解决方案。 如果没有做任何事,有人可能会给我一个想法如何开始这种事情。我想到的一个想法是创建一个实体,例如:JPA:跟踪实体演变/变化的想法

class Change { 
    String className; 
    long id; 
    String fieldName; 
    String fieldValue; 
    Date dateOfChange; 
} 

其中将包含更改的属性。这种解决方案似乎在存储位置方面非常有效,但处理被跟踪的实体之间的关系可能会更困难(尚未弄清楚)。

我非常感谢任何输入这个主题,

亲切的问候, P.

+0

我不这么认为在JPA 1.0中。也许在JPA 2.0中? – Kartoch 2011-01-28 07:42:01

+0

JPA2不会触及这样的事情。它被列在JPA2.1可能的项目上(回来2年) – DataNucleus 2011-01-28 07:44:21

回答

4

可以使用@PrePersist注解来创建一个条目,并将其存储到数据库中。

class Entity{ 

    @PrePersist 
    public void logChanges(){ 
     Change c = new Change() 
     c.setEverythingXouLikeToLog(); 

     entityManager.persist(c); 
     // don't forget ExceptionHandling 
    } 

}