7

我想知道是否可以使用@PrePersistand @PreUpdatewith Ebeanand Play!2.0。如果是这样,如何激活此功能。我已经看到一个月前有一个拉取请求添加了这个功能,但我无法在 Play 2.0 上完成这项工作。

谢谢

4

4 回答 4

10

如果您的目标只是设置 createdAt 或 updatedAt 字段,并且您正在使用 EBean,请尝试@CreatedTimestamp使用@UpdatedTimestamp. 见这里。我更喜欢使用 Biesior 的方法,但它似乎在 Cascades 上失败了——这些方法从未被调用过。

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

@Column(name="updated_at")
@UpdatedTimestamp
private Date updatedAt;
于 2013-02-13T04:50:18.220 回答
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);
    }


}
于 2012-09-09T12:38:06.617 回答
3

似乎要走的路是实现BeanPersistController,它提供了预处理和后处理选项。

要在 Play 中配置它,请修改application.conf文件,如下所示

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

于 2012-09-03T12:26:08.497 回答
1

我真的很晚了,但你可以使用这个:https ://gist.github.com/1547244 。您需要像这样在 application.conf 中注册此类:

ebean.default="models.*, models.sgcore.SGBeanPersistController"
于 2012-12-20T13:50:57.383 回答