Playframework play.db.ebean.Model.save()覆盖未在子级上调用
例如:Playframework play.db.ebean.Model.save()覆盖未在子级上调用,playframework,ebean,Playframework,Ebean,例如: 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
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 in controller时:
Parent p = new Parent();
Child c = new Child(p);
p.setChild(c);
p.save();
未调用子级中重写的save()。然而,看起来子对象确实保存在数据库中。有线索吗?谢谢 模型上的save()方法不是设计成这样使用的
相反,您可以使用标准的JPA@PrePersist/@PreUpdate注释或Ebean的BeanPersistController(当您需要更多的控制、对事务的访问、加载的属性、更新的属性等时)。模型上的save()方法不是设计为以这种方式使用的
相反,您可以使用标准的JPA@PrePersist/@PreUpdate注释或Ebean的BeanPersistController(当您需要更多控制、访问事务、加载属性、更新属性等时)。我找到了另一种解决方法 如果我在子模型中保存,父模型也会相应地更新:
Parent p = new Parent();
Child c = new Child(p);
p.setChild(c);
c.save();
将子对象保存到数据库中后,父对象也会更新并保持不变
不过,Ebean文档中没有提到这一点。我找到了另一种解决方法 如果我在子模型中保存,父模型也会相应地更新:
Parent p = new Parent();
Child c = new Child(p);
p.setChild(c);
c.save();
将子对象保存到数据库中后,父对象也会更新并保持不变
但是,Ebean文档中没有提到这一点