Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA:设置@JoinColumn(updateable=false)以避免OptimisticLockException_Java_Jpa_Optimistic Locking - Fatal编程技术网

Java JPA:设置@JoinColumn(updateable=false)以避免OptimisticLockException

Java JPA:设置@JoinColumn(updateable=false)以避免OptimisticLockException,java,jpa,optimistic-locking,Java,Jpa,Optimistic Locking,鉴于以下情况,以下两个实体 @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

鉴于以下情况,以下两个实体

@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
}
两个问题:

  • 实体A的版本号是否每次更新都会增加 实体B合并到DB(注意,没有 在与A)的关系上定义了CascadeType.MERGE,从而导致 a与a合并时可能出现的OptimisticClock异常 不同的版本号

  • 如果是,是否有助于避免 OptimisticLockException如果我在 关系


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

    如果只更改B,则无法在A上得到锁定错误

    你只会在B上得到一个锁错误


    检查SQL日志以了解您实际执行的操作。

    我不确定默认的锁定类型,但您是否尝试过摆弄锁定模式(
    OPTIMISTIC
    vs
    OPTIMISTIC\u FORCE\u INCREMENT
    )?我认为默认情况下是乐观的。我认为这与此无关,因为只有在显式使用实体管理器的锁API时才能指定锁模式,而我没有。我只有一个@Version字段。B和a都已更新。但B中的更新并没有触及其关系A。