2012-03-29 2 views
7

Я хочу знать, можно ли использовать @PrePersist и @PreUpdate с Ebean и играть! 2,0. Если да, то как эта функция активирована. Я видел, что была добавлена ​​функция pull request, добавив эту функцию месяц назад, но я не могу сделать эту работу в Play 2.0.Можно ли использовать @PrePersist и @PreUpdate с eBean и Play! 2,0?

Благодаря

+0

Согласно https://github.com/playframework/Play20/pull/113 должно быть возможно с BeanPersistListener, хотя я не знаю, как настроить его в PLAY2. – sealskej

ответ

3

Кажется, путь заключается в реализации BeanPersistController, который предлагает пред- и пост-обработки параметров.

Чтобы настроить его в Play, изменить файл application.conf, as such:

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. Я предпочел бы использовать подход Бьезиора, но, похоже, на Каскадах это не получилось - методы никогда не назывались.

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

@Column(name="updated_at") 
@UpdatedTimestamp 
private Date updatedAt; 
Смежные вопросы