Можно ли использовать @PrePersist и @PreUpdate с eBean и Play! 2,0? - PullRequest
7 голосов
/ 29 марта 2012

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

Спасибо

Ответы [ 4 ]

10 голосов
/ 13 февраля 2013

Если ваша цель - просто установить поля createAt или updatedAt, и вы используете EBean, попробуйте @CreatedTimestamp и @UpdatedTimestamp. Смотрите здесь . Я бы предпочел использовать подход Бьезиора, но на каскадах он не удался - методы никогда не вызывались.

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

@Column(name="updated_at")
@UpdatedTimestamp
private Date updatedAt;
4 голосов
/ 09 сентября 2012

Не прямой ответ, но вы можете смоделировать эти функции, переопределив методы 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);
    }


}
3 голосов
/ 03 сентября 2012

Похоже, для этого нужно реализовать BeanPersistController , который предлагает опции предварительной и последующей обработки.

Чтобы настроить его в режиме воспроизведения, измените файл application.conf как таковое :

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

1 голос
/ 20 декабря 2012

Я действительно опоздал на это, но вы можете использовать это: https://gist.github.com/1547244. Вам нужно будет зарегистрировать этот класс в вашем application.conf следующим образом:

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