我想在历史模型中添加对特定模型发生的所有更改事件,为此,这就是我所做的:
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 之外,一切都会正常工作。原因对我来说很清楚,但正因为如此,我被困住了。
原因 ?这是因为我通过控制器中的 Form 设置了这些值(在更新方法中):
Form<MyModel> form = form(MyModel.class).bindFromRequest();
MyModel model = form.get();
通过这样做,bindFromRequest()
在 MyModel 中设置值而不设置 id(当然),因此this.getId()
为 null。
我该怎么做才能拥有getId()
模型的相应ID?
(注意:我简化了问题,删除了创建、检查等)。