在Play框架中对Bean的模型进行属性更改时通知?

时间:2012-12-12 13:46:12

标签: 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 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?

(注意:我简化了问题,删除了创建,检查等)。

感谢您的帮助!

0 个答案:

没有答案