Playframework 2.0 在Ebean'上更改属性时通知;Play框架中的s模型?
我想在历史模型中添加特定模型发生的所有更改事件,为此,我做了以下工作:Playframework 2.0 在Ebean'上更改属性时通知;Play框架中的s模型?,playframework-2.0,listener,ebean,Playframework 2.0,Listener,Ebean,我想在历史模型中添加特定模型发生的所有更改事件,为此,我做了以下工作: class MyModel extends Model { @Id private Long Id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String
class MyModel extends Model {
@Id
private Long Id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
History.add(this.getId(), "name", this.name, name);
this.name = name;
}
}
public class History extends Model {
public Long beanId;
public String field;
public String oldValue;
public String newValue;
public static void add (Long beanId, String field, String oldValue, String newValue) {
History history = new History();
history.beanId = beanId;
history.field = field;
history.oldValue = oldValue;
history.newValue = newValue;
history.save();
}
}
除了beanId没有得救外,一切都会很顺利。原因对我来说很清楚,但正因为如此,我陷入了困境
原因是什么?
这是因为我通过控制器中的表单(在更新方法中)设置了这些值:
formform=Form(MyModel.class).bindFromRequest();
MyModel=form.get();
通过这样做,bindFromRequest()
设置MyModel中的值,而不设置id(当然),因此this.getId()
为空
如何使getId()
具有模型的相应ID
(注意:我简化了问题,删除了创建、检查等)。我可能遗漏了一些东西,但是:如果你没有id,你应该得到什么?所有
MyModel
s的name
s是否唯一?否则,如果不以某种方式传递id,您如何知道正在处理哪个条目?您可能还对BeanPersistListener
感兴趣,这就是为什么我需要id,但由于表单(),我没有id。bindFromRequest()!:)BeanPersistListener很有趣,但我找不到实现的示例,您有链接吗?作为跟进,可以在以下问题中找到解决方案:
Form<MyModel> form = form(MyModel.class).bindFromRequest();
MyModel model = form.get();