我想知道是否可以使用@PrePersist
and @PreUpdate
with Ebean
and Play!2.0。如果是这样,如何激活此功能。我已经看到一个月前有一个拉取请求添加了这个功能,但我无法在 Play 2.0 上完成这项工作。
谢谢
我想知道是否可以使用@PrePersist
and @PreUpdate
with Ebean
and Play!2.0。如果是这样,如何激活此功能。我已经看到一个月前有一个拉取请求添加了这个功能,但我无法在 Play 2.0 上完成这项工作。
谢谢
如果您的目标只是设置 createdAt 或 updatedAt 字段,并且您正在使用 EBean,请尝试@CreatedTimestamp
使用@UpdatedTimestamp
. 见这里。我更喜欢使用 Biesior 的方法,但它似乎在 Cascades 上失败了——这些方法从未被调用过。
@Column(name="created_at")
@CreatedTimestamp
private Date createdAt;
@Column(name="updated_at")
@UpdatedTimestamp
private Date updatedAt;
不是直接的答案,但您可以通过覆盖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);
}
}
似乎要走的路是实现BeanPersistController,它提供了预处理和后处理选项。
要在 Play 中配置它,请修改application.conf
文件,如下所示:
ebean.default="models.*,models.adapters.YourPersistController"
.
我真的很晚了,但你可以使用这个:https ://gist.github.com/1547244 。您需要像这样在 application.conf 中注册此类:
ebean.default="models.*, models.sgcore.SGBeanPersistController"