2012-03-29 6 views
7

@PrePersistと​​をEbeanとして再生できるかどうか知りたいですか? 2.0。もしそうなら、この機能はどのように起動されますか?私はpull requestが1ヶ月前にこの機能を追加していたのを見ましたが、私はこの作業をPlay 2.0で行うことはできません。@PrePersistと@PreUpdateをeBeanとPlayで使用することは可能ですか? 2.0?

おかげ

+0

私は知らないが、https://github.com/playframework/Play20/pull/113によれば、PLAY2でそれを設定する方法、BeanPersistListenerで可能でなければなりません。 – sealskej

答えて

3

進むべき道は、前処理および後処理オプションを提供していますBeanPersistControllerを実装することであるようです。

as suchapplication.confファイルを修正し、プレイ中にそれを設定するには、次の

ebean.default="models.*,models.adapters.YourPersistController"を。

4

ない直接答えていますが、モデル内Modelクラスのメソッドをオーバーライドすることにより、これらの機能をシミュレートすることができ、サンプル:

public class Post extends Model { 

    // .... 

    @Override 
    public void save() { 
     this.createDate = new Date(); 
     this.modifyDate = new Date(); 
     super.save(); 
    } 

    @Override 
    public void update(Object o) { 
     this.modifyDate = new Date(); 
     super.update(o); 
    } 


} 
1

私は本当に遅く、この上だが、あなたは、この使用することができます:https://gist.github.com/1547244を。あなたはこのようapplication.confあなたにこのクラスを登録する必要があります:

ebean.default="models.*, models.sgcore.SGBeanPersistController" 
10

あなたの目標はただcreatedAtまたはupdatedAtフィールドを設定している、とあなたはEBeanを使用している場合は、@CreatedTimestamp@UpdatedTimestampを試してみてください。 hereを参照してください。私はBiesiorのアプローチを使用する方が好きですが、カスケードで失敗するように思われました。メソッドは呼び出されませんでした。

@Column(name="created_at") 
@CreatedTimestamp 
private Date createdAt; 

@Column(name="updated_at") 
@UpdatedTimestamp 
private Date updatedAt; 
関連する問題