2012-03-29 11 views
7

Chcę się dowiedzieć, czy można używać @PrePersist i @PreUpdate z Ebean i Grać! 2.0. Jeśli tak, to w jaki sposób aktywowano tę funkcję. Zauważyłem, że było pull request dodanie tej funkcji miesiąc temu, ale nie mogę tego zrobić w Play 2.0.Czy można używać @PrePersist i @PreUpdate z eBean i graj! 2.0?

Dzięki

+0

Według https://github.com/playframework/Play20/pull/113 powinno być możliwe z BeanPersistListener, choć nie wiem, jak go skonfigurować w PLAY2. – sealskej

Odpowiedz

3

Wydaje się, że droga jest wdrożenie BeanPersistController, który oferuje pre- i post-processing opcje.

Aby skonfigurować go w grze, należy zmodyfikować plik application.conf, as such:

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

4

Nie bezpośredniej odpowiedzi, ale można symulować te funkcje poprzez nadpisanie metody Model klasy w modelu, próbki:

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

Jestem bardzo późno na to, ale można użyć tego: https://gist.github.com/1547244. trzeba będzie zarejestrować się w tej klasie ty application.conf tak:

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

Jeśli twoim celem jest po prostu ustawienie pola createdAt lub updatedAt i używasz EBean, spróbuj @CreatedTimestamp i @UpdatedTimestamp. Zobacz here. Wolałbym korzystać z podejścia Biesiora, ale wydawało się, że nie działa on na kaskadach - metody nigdy nie były wywoływane.

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

@Column(name="updated_at") 
@UpdatedTimestamp 
private Date updatedAt; 
Powiązane problemy