播放框架2并自动将add_date添加到ebeans项

时间:2017-05-26 13:43:14

标签: java playframework-2.0 ebean

我对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,因此它与master相同)。

[编辑:]这个问题似乎没有出现在我的开发系统上,有了男人db,但是在使用MySql部署时

1 个答案:

答案 0 :(得分: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();
    }

    // ...