我对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部署时
答案 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();
}
// ...