问题
I want to know if is it possible to use @PrePersist
and @PreUpdate
with Ebean
and Play! 2.0. If so how is this feature activated. I've seen that there was a pull request adding this feature a month ago, but I can't make this work on Play 2.0.
Thanks
回答1:
If your goal is just setting createdAt or updatedAt fields, and you're using EBean, try @CreatedTimestamp
and @UpdatedTimestamp
. See here. I'd prefer to use Biesior's approach, but it seemed to fail on Cascades -- the methods were never called.
@Column(name="created_at")
@CreatedTimestamp
private Date createdAt;
@Column(name="updated_at")
@UpdatedTimestamp
private Date updatedAt;
回答2:
Not a direct answer, but you can simulate these features by overriding methods of Model
class in your model, sample:
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:
It seems the way to go is to implement the BeanPersistController, which offers Pre- and Post-Processing options.
To configure it in Play, modify the application.conf
file, as such:
ebean.default="models.*,models.adapters.YourPersistController"
.
回答4:
I'm really late on this but you can use this : https://gist.github.com/1547244 . You will need to register this Class in you application.conf like this :
ebean.default="models.*, models.sgcore.SGBeanPersistController"
来源:https://stackoverflow.com/questions/9918143/is-it-possible-to-use-prepersist-and-preupdate-with-ebean-and-play-2-0