2011-01-28 53 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 
    } 

}