2017-05-26 57 views
0

我对ebeans有一个小的困难。播放框架2并自动添加一个添加日期到ebeans项目

我用来创建与下面的代码项目,填充ADDDATE:

@MappedSuperclass 
public abstract class GenericModel extends Model { 

    @Id 
    protected Long id; 

    @UpdatedTimestamp 
    @Version 
    private Date lastUpdate; 

    @CreatedTimestamp 
    protected Date addDate; 

    public Long getId(){ 
     return id; 
    } 

    public Date getLastUpdate(){ 
     return lastUpdate; 
    } 

    public Date getAddDate(){ 
     return addDate; 
    } 

} 

然而,正如我需要将数据与离线设备同步,我把它改为:

@MappedSuperclass 
public abstract class GenericModel extends Model { 

    @Id 
    protected Long id; 

    @UpdatedTimestamp 
    @Version 
    private Date lastUpdate; 

    protected Date addDate; 

    public Long getId(){ 
     return id; 
    } 

    public Date getLastUpdate(){ 
     return lastUpdate; 
    } 

    public Date getAddDate(){ 
     return addDate; 
    } 

    @WhenCreated 
    private void addCreateTimestamp(){ 
     if(this.addDate == null) this.addDate = new Date(); 
    } 

} 

但是这不起作用,因为插入时addDate不能为空。

是否有另一种填充addDate的方法没有设置(对于同步,我有时需要手动设置addDate,因此它与主相同)。

[编辑:]此问题似乎并没有出现在我与男人数据库开发系统,但是当使用MySQL部署

回答

0

@WhenCreated仅仅是@CreatedTimestamp的别名。您希望在addCreateTimestamp()方法之前添加此注释。这种方法永远不会执行,因此addDate从不设置。

试试这个:

@MappedSuperclass 
public abstract class GenericModel extends Model { 
    // ... 
    protected Date addDate; 
    // ... 

    @Override 
    public void save() { 
     addCreateTimestamp(); 
     super.save(); 
    } 

    private void addCreateTimestamp(){ 
     if(this.addDate == null) this.addDate = new Date(); 
    } 

    // ...