4febc39ba14661852deb6c5450e8daba25768194
[JavaForFun] /
1 package de.spring.example.persistence.domain.audit;
2
3 import java.time.LocalDateTime;
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 @Entity
20 @RevisionEntity(MyCustomRevisionListener.class)
21 @Table(name="CUSTOM_REVISION", schema="mybatis_example")
22 public class MyCustomRevision extends DefaultRevisionEntity {
23         
24         @Id
25         @GeneratedValue(strategy=GenerationType.IDENTITY)
26         @Column(name="ID", updatable=false, nullable=false)
27         @RevisionNumber
28         private Long id;
29         
30         @Column(name="REVISION_DATE")
31         @Temporal(TemporalType.TIMESTAMP)
32         @RevisionTimestamp
33         private LocalDateTime revisionDate;
34         
35         @Column(name="USERNAME")
36         private String username;
37         
38         // It will be used by JPA when filling the property fields with data coming from data base.
39         protected MyCustomRevision() {
40                 
41         }
42         
43         // It will be used by my code (for example by Unit Tests)
44         public MyCustomRevision(String username) {
45                 this.username = username;
46         }
47
48         /**
49          * WARNING: JPA REQUIRES GETTERS!!!
50          */
51         
52         public Long getId() {
53                 return id;
54         }
55         
56     public LocalDateTime getRevisionDate() {
57         return revisionDate;
58     }
59         
60     public String getUsername() {
61         return username;
62     }
63     
64     public void setUsername(String username) {
65         this.username = username;
66     }
67 }