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();