我想在历史模型中添加特定模型发生的所有更改事件,为此,这就是我所做的:
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()
为空。
如何让getId()拥有模型的相应ID?
(注意:我简化了问题,删除了创建,检查等)。
感谢您的帮助!