d388d04e21f4e31c28ad0fe6be4e751e47d81e45
[JavaForFun] /
1 package de.spring.example.persistence.domain.audit;
2
3 import java.util.Date;
4
5 import javax.persistence.Column;
6 import javax.persistence.Entity;
7 import javax.persistence.GeneratedValue;
8 import javax.persistence.GenerationType;
9 import javax.persistence.Id;
10 import javax.persistence.Table;
11 import javax.persistence.Temporal;
12 import javax.persistence.TemporalType;
13
14 /** import org.hibernate.envers.DefaultRevisionEntity; **/
15 import org.hibernate.envers.RevisionEntity;
16 import org.hibernate.envers.RevisionNumber;
17 import org.hibernate.envers.RevisionTimestamp;
18
19 import com.fasterxml.jackson.annotation.JsonFormat;
20
21 @Entity
22 @RevisionEntity(MyCustomRevisionListener.class)
23 @Table(name="CUSTOM_REVISION", schema="mybatis_example")
24 public class MyCustomRevision /** extends DefaultRevisionEntity **/ {
25         
26         @Id
27         @GeneratedValue(strategy=GenerationType.IDENTITY)
28         @Column(name="ID", updatable=false, nullable=false)
29         @RevisionNumber
30         private Long id;
31         
32         @Column(name="REVISION_DATE")
33         @Temporal(TemporalType.TIMESTAMP)
34         @RevisionTimestamp
35         @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
36         private Date revisionDate;
37         
38         @Column(name="USERNAME")
39         private String username;
40         
41         // It will be used by JPA when filling the property fields with data coming from data base.
42         protected MyCustomRevision() {
43                 
44         }
45         
46         // It will be used by my code (for example by Unit Tests)
47         public MyCustomRevision(String username) {
48                 this.username = username;
49         }
50
51         /**
52          * WARNING: JPA REQUIRES GETTERS!!!
53          */
54         
55         public Long getId() {
56                 return id;
57         }
58         
59     public Date getRevisionDate() {
60         return revisionDate;
61     }
62         
63     public String getUsername() {
64         return username;
65     }
66     
67     public void setUsername(String username) {
68         this.username = username;
69     }
70 }