2012-03-29 11 views
7

Ich möchte wissen, ob es möglich ist, @PrePersist und @PreUpdate mit Ebean zu verwenden und zu spielen! 2.0. Wenn ja, wie wird diese Funktion aktiviert? Ich habe gesehen, dass es vor einem Monat ein pull request hinzugefügt hat, aber ich kann das nicht mit Play 2.0 machen.Ist es möglich, @PrePersist und @PreUpdate mit eBean und Play zu verwenden? 2.0?

Dank

+0

Nach https://github.com/playframework/Play20/pull/113 sollte es mit BeanPersistListener möglich sein, obwohl ich weiß nicht, wie es in Play2 zu konfigurieren. – sealskej

Antwort

3

Es scheint, die Möglichkeit, die BeanPersistController zu implementieren zu gehen, welche Optionen Pre- und Post-Processing bietet.

Um es im Play zu konfigurieren, ändern Sie die Datei application.conf, as such:

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

4

keine direkte Antwort, aber Sie können diese Funktionen durch zwingende Methoden der Model Klasse in Ihrem Modell, Probe simulieren:

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

Ich bin wirklich spät auf diese aber Sie können diese verwenden: https://gist.github.com/1547244. Sie müssen diese Klasse registrieren in ihr so ​​application.conf:

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

Wenn Ihr Ziel nur createdAt oder updatedAt Felder setzt, und Sie verwenden EBean, versuchen @CreatedTimestamp und @UpdatedTimestamp. Siehe here. Ich würde lieber Biesior verwenden, aber bei Cascades schien es nicht zu funktionieren - die Methoden wurden nie aufgerufen.

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

@Column(name="updated_at") 
@UpdatedTimestamp 
private Date updatedAt;