2

给定以下两个实体

@Entity
public class A {
  @Version
  protected int version;

  String basicPropertey;

  // getter and setter for basicProperty
}

@Entity
public class B {
  @Version
  protected int version;

  @ManyToOne
  private A a;

  public B(A a) {
    this.a = a}
  }

  //getter for a
}

两个问题:

  1. 每次实体 B 合并到数据库时,实体 A 的版本号是否会增加(请注意,在与 A 的关系上没有定义 CascadeType.MERGE),因此,当 A 与不同的合并时,可能会导致 OptimisticcLockException版本号?

  2. 如果是,如果我添加关系,是否有助于避免出现 OptimisticLockException 的可能性@JoinColumn(updatable=false)

我的情况是实体 B 非常频繁地更新并且 A 偶尔更新,但只有它的基本属性(而不是关系)并且我在实体 A 上得到一个 OptimisticLockException。

4

1 回答 1

1

如果只更改 B,则不会在 A 上出现锁定错误。

您只会在 B 上收到锁定错误。

检查您的 SQL 日志以了解您实际在做什么。

于 2011-11-16T17:03:09.900 回答