2016-06-10 53 views

回答

0

1)從修訂監聽器中,調用fixTimezone修訂版的方法,如下所示。

2)將其作爲LocalDateTime使用getRevisionDate方法,如下所示。

public class MyRevisionListener 
    implements RevisionListener { 

    @Override 
    public void newRevision(Object revisionEntity) { 
     MyRevision revision = (MyRevision)revisionEntity; 
     revision.fixTimezone(); 
     } 
    } 

@Entity 
@RevisionEntity (MyRevisionListener.class) 
public class MyRevision 
     implements Serializable { 

    @Id 
    @GeneratedValue 
    @RevisionNumber 
    private long id; 

    @RevisionTimestamp 
    @Temporal (TemporalType.TIMESTAMP) 
    @Column (nullable = false) 
    private Date date; 

    private static final ZoneId ZONE_ID_UTC = ZoneId.of("UTC"); 

    public void fixTimezone() { 
     LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZONE_ID_UTC); 
     date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); 
     } 

    @NotNull 
    public LocalDateTime getRevisionDate() { 
     return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); 
     } 

    ... 
    } 

相關休眠問題: