当前位置: 首页 > 知识库问答 >
问题:

OpenJPA:从乐观锁中排除字段更新

公西嘉玉
2023-03-14

我在我的持久性上下文中使用乐观锁定,并试图通过更新某些实体字段来找出一种避免写入锁定实体的方法。

下面是一个示例:

@Entity
public class A {
    private String field1;
    private String field2;

    @Version
    private long version;
}

因此,我需要的是避免在更新< code>field2时对实体进行写锁定(即在事务结束时增加< code>version字段),但在更新任何其他实体字段时仍具有默认行为。

到目前为止,我想出的解决方案是创建自己的版本控制策略(在示例中,扩展< code > NumberVersionStrategy )以避免在只更新指定字段的情况下增加实体的版本(在上面的示例中,只有< code>field2)。但是这个解决方案对我来说很复杂...一个字段不是有专门的注释把它排除在实体版本控制之外什么的吗?)

共有1个答案

赵兴朝
2023-03-14

不,没有OpenJPA特性允许您从乐观锁定中排除给定字段。

 类似资料:
  • 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,会产生冲突,解决方案有两种:乐观锁、悲观锁。 悲观锁在这里不讲,自行Google。 乐观锁假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性,不完整则更新失败。 乐观锁实现方式 使用整数表示数据版本号.更新时检查版本号是否一致,如果相等,则更新成功,且版本号+1.如果不等,则数据已经被修改过,更新失败。 使用时间戳来实现。 本质上也

  • 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。 乐观锁与悲观锁的具体区别: http://www.cnblogs.com/Bob-FD/p/3352216.html

  • 乐观锁Version 要使用乐观锁,需要使用version标记 type User struct { Id int64 Name string Version int `xorm:"version"` } 在Insert时,version标记的字段将会被设置为1,在Update时,Update的内容必须包含version原来的值。 var user User engine

  • 我试图为现有MongoDB数据库中的文档实现乐观锁定。目前没有字段,我希望避免添加它,因为我们将不得不停止应用程序。 但是有一个date字段,我似乎可以这样使用它: 这就像是对现有文档的一种魅力。但是当我尝试添加一个新文档时,我得到: 找不到能够从[java.lang.Integer]类型转换为[java.util.date]类型的转换器 如果我添加一个整数到日期转换器,那么新文档将保存在数据库中

  • 本文向大家介绍说一下乐观锁和悲观锁?相关面试题,主要包含被问及说一下乐观锁和悲观锁?时的应答技巧和注意事项,需要的朋友参考一下 乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。 悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。 数据库的乐观锁需要自

  • 问题内容: 我找不到有关MySQL中乐观锁定的任何详细信息。我读到开始事务使两个实体上的更新保持同步,但是,它不会停止两个用户同时更新数据而引起冲突。 显然乐观锁定会解决这个问题吗?这在MySQL中如何应用。是否有SQL语法/关键字呢?还是MySQL具有默认行为? 谢谢你们。 问题答案: 关键是,乐观锁定不是数据库功能,不适用于MySQL或其他功能:乐观锁定是一种使用带有标准指令的DB进行的实践。