Можно ли использовать @PrePersist и @PreUpdate с eBean и Play! 2.0?

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

Спасибо


person GuidoMB    schedule 29.03.2012    source источник
comment
Согласно github.com/playframework/Play20/pull/113 это должно быть возможно с BeanPersistListener, хотя я не знаю, как его настроить в Play2.   -  person sealskej    schedule 03.09.2012


Ответы (4)


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

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

@Column(name="updated_at")
@UpdatedTimestamp
private Date updatedAt;
person liberty    schedule 13.02.2013

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


}
person biesior    schedule 09.09.2012

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

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

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

person Samuel    schedule 03.09.2012

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

ebean.default="models.*, models.sgcore.SGBeanPersistController"
person Maxence    schedule 20.12.2012