代码之家  ›  专栏  ›  技术社区  ›  Daniel Bleisteiner

优化锁定和@OneTomany(mappedby=…)处理?

  •  3
  • Daniel Bleisteiner  · 技术社区  · 15 年前

    我有一个abstractEntity类作为所有我的实体的超类,它定义了一个乐观锁列,如下所示:

    @Version
    private long lockVersion;
    

    现在,我经常得到对实体的优化锁定例外,这些例外只在一个映射关系中发生更改,类似于以下内容:

    @OneToMany(mappedBy = Property.PROPERTY_DESCRIPTOR, cascade = { CascadeType.REMOVE })
    private Set<Property> properties = new HashSet<Property>();
    

    是否可以从Hibernate乐观锁定中排除这些集合?数据库中的实体根本没有更改…只有其他人引用它。

    2 回复  |  直到 15 年前
        1
  •  2
  •   ChssPly76    15 年前

    如果某个特定属性(和/或集合)有问题,可以通过以下方式将其明确排除在外:通过 @OptimisticLock 注释:

    @OptimisticLock(excluded=true)
    @OneToMany(mappedBy = Property.PROPERTY_DESCRIPTOR, cascade = { CascadeType.REMOVE })
    private Set<Property> properties = new HashSet<Property>();
    

    请注意,它是JPA标准的Hibernate扩展。

        2
  •  0
  •   Community Lee    7 年前

    我认为这个问题中被接受的答案应该有助于你: link

    虽然我自己没有尝试过,但它可以检测到不需要版本更新的更改,而不需要增加版本。