示例:
public class Child extends Model {
@Id
public Long childId;
@OneToOne
public Parent parent;
public Child(Parent p) {
parent = p;
}
@Override
public void save() {
Logger.debug("saving child");
super.save();
}
}
public class Parent extends Model {
@Id
public Long parentId;
@OneToOne(mappedBy = "parent", cascade = CascadeType.ALL)
public Child child;
void setChild(Child c) { child = c; }
}
当我在控制器中调用save时:
Parent p = new Parent();
Child c = new Child(p);
p.setChild(c);
p.save();
未调用子级中被覆盖的save()。但是,看起来子对象确实保存在数据库中。任何线索?谢谢!
答案 0 :(得分:0)
Model上的save()方法不是以这种方式使用的。
相反,您可以使用标准JPA @PrePersist / @PreUpdate注释或Ebean的BeanPersistController(当您需要更多控制,访问事务,加载属性,更新属性等)时。
答案 1 :(得分:0)
我找到了解决这个问题的另一种方法。
似乎如果我在子模型中进行保存,父母也会相应地更新:
Parent p = new Parent();
Child c = new Child(p);
p.setChild(c);
c.save();
将子对象保存到db后,父对象也会更新并保持持久性。
但是在Ebean文档中没有提到这一点。