1

我想在历史模型中添加对特定模型发生的所有更改事件,为此,这就是我所做的:

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?

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

4

0 回答 0