如何在更新子级时级联@Version的更新?

时间:2014-06-26 01:31:18

标签: java orm playframework-2.0 persistence ebean

问题:

我在属性" lastUpdate" 上有一个带有 @Version 的父类,用于并发检查。这个父类有一个 @OneToMany 关系,当我更新它的孩子时,我想更新字段" lastUpdate"本身就像我更新其他字段时发生的那样。

JPA 中有 @OptmisticLocking(cascade = true)来执行此操作,但我找不到 Ebean ORM的类似选项在Play2中。

重要:类之间没有CascadeType。

代码:

@Entity
public class Child extends Model {
  @ManyToOne()
  @JoinColumn(name="parent_id")
  public Parent parent;
}


@Entity
public class Parent extends Model {
  @Version
  public Date lastUpdate;

  @OneToMany(mappedBy = "parent")
  public List<Child> children = new ArrayList<Child>();
}


public class Application extends Controller {
  public void updateChild(Parent p, Child c) {
    ...
    c.save(); // or c.update()
    p.children.set(c); // imagine a real code here updating, adding or removing a child.

    p.update();
    return;
  }
}

您可以在此处找到类似的问题: Version of parent object is not incremented if one-to-many relationship of the parent object is modified

非常感谢... =)

1 个答案:

答案 0 :(得分:1)

记录为https://github.com/ebean-orm/avaje-ebeanorm/issues/155

将使用markAsDirty()方法在4.1.1中支持。

p.markAsDirty();
p.update();