2017-05-26 5 views
0

私はebeansで少し難しかったです。フレームワーク2をプレイして、自動的にadd_dateをeBeansアイテムに追加します。

私は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(); 
    } 

} 
:私はオフラインデバイスとデータを同期する必要があるとして、しかし

@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; 
    } 

} 

を、私はそれを変更しました

しかし、挿入時にaddDateをnullにすることはできないという例外があるため、これは機能しません。

addDateが設定されていない別の方法はありますか(同期のために、手動でaddDateを設定してマスターと同じにする必要があることもあります)。

[EDIT:この問題は、男性のデシベルで私の開発システム上に表示していないようですが、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(); 
    } 

    // ... 
関連する問題