当前位置: 首页 > 面试题库 >

如何禁用JPA的锁定系统?

呼延才俊
2023-03-14
问题内容

我正在使用OpenJPA,但遇到锁定问题。我已经知道什么是OptimisticLockException以及何时抛出。

但是我该如何处理呢?

在*下面,您可以找到一小段有关乐观锁异常的段落。

简而言之,我如何才能完全禁用锁管理器?

在我的persistent.xml中,我具有以下xml代码,但是它不起作用。为什么呢

...
<properties>
  <property name="openjpa.LockManager" value="none" />
</properties>
...

*根据有关Java持久性的Wikibooks:

处理乐观锁异常

不幸的是,程序员常常为了自己的利益而变得过于机灵。使用乐观锁定时出现的第一个问题是发生OptimisticLockException时该怎么办。友好的邻域超级程序员的典型响应是自动处理异常。他们将只创建一个新事务,刷新对象以重置其版本,然后将数据合并回该对象并重新提交。Presto问题解决了吗?

实际上,这首先使整个锁定点无效。
如果这是您想要的,则最好不使用lock
。不幸的是,OptimisticLockException很少应该被自动处理,并且您确实需要打扰用户。您应该向用户报告冲突,或者说“对不起,但发生编辑冲突,他们将不得不重做工作”,或者在最佳情况下,刷新对象并向用户显示当前数据,并他们提交的数据,并在适当时帮助他们将两者合并。

一些自动合并工具将比较数据的两个冲突版本,如果各个字段都没有冲突,则将在没有用户帮助的情况下自动合并数据。这就是大多数软件版本控制系统所做的事情。不幸的是,用户通常比程序更能确定何时有冲突,仅因为两个版本的.java文件未更改同一行代码并不意味着没有冲突,因此第一个用户可以删除一个另一个用户添加了一个要引用的方法的方法,以及其他可能导致通常每晚构建中断的其他可能问题。


问题答案:

但是我该如何处理呢?

这取决于您的应用程序……您需要做最有意义的事情。也许您需要提示用户数据已被同时修改,然后重新提交新数据?

尽管我认为禁用OptimisticLocking并不是正确的解决方案,但我认为设置这两个属性将摆脱您看到的OLE。

<properties>
  <property name="openjpa.Optimistic" value="false"/>
  <property name="openjpa.LockManager" value="none"/>
</properties>


 类似资料:
  • 问题内容: 我希望以下测试仅打印“已被锁定”一次。但是它因此会打印行。 据我了解,将在可能的情况下将其锁定(即,如果尚未锁定)。但是显然不是这样。 如何设置这样的锁线程安全? 问题答案: 名称为,表示您已经拥有锁了。 如果希望使用线程块,则可以使用例如具有1(或更多)许可的a。

  • 我试图了解调用EntityManager.lock(entity,LockModeType.READ)的效果。API 文档对我来说听起来很混乱。 如果我必须并发线程,线程1调用lock(实体,LockModeType.READ),线程2还能读写实体吗? 到目前为止,我学到了什么: JPA1 中的锁类型 READ 与 JPA2 中的 OPTIMISTIC 相同。如果设置了此类锁,则实体管理器会在提交

  • 问题内容: 我试图记下在Windows OS中工作的每个员工的工作站/系统屏幕的锁定和解锁。我需要使用JAVA将这些记录存储在数据库中。我搜索了所有内容,并知道如何使用JAVA进行操作。在我搜索过的任何地方,我只会获得VB的代码。 问题答案: 使用JNI(Java本机接口)从Windows系统dll调用函数。 以下是使用功能检查工作站锁定状态的示例代码:http : //brutaldev.com

  • 本文向大家介绍Android编程实现禁止系统锁屏与解锁亮屏的方法,包括了Android编程实现禁止系统锁屏与解锁亮屏的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程实现禁止系统锁屏与解锁亮屏的方法。分享给大家供大家参考,具体如下: 需求: 某个时刻任务执行完毕,关闭屏幕,某时刻再开启屏幕继续执行任务 通常情况下,不设置屏幕常亮,系统会自动锁屏,锁屏后不能从代码解锁(

  • 问题内容: 有没有一种方法可以使用python禁用或锁定鼠标和键盘?我想冻结鼠标并禁用键盘。 问题答案: 我还没有测试(实际上我已经测试了鼠标部分,但是它很烦人),但是使用pyhook这样的东西可以满足您的要求:

  • 问题内容: 我正在使用无状态Spring Security,但是如果要注册,我想禁用Spring Security。我禁用了 但它不起作用,我在下面收到错误消息: 我认为这意味着弹簧安全过滤器正在工作 我的网址顺序始终为“ / api / v1” 我的spring配置是 我的身份验证过滤器是 我的控制器是 我怎么做? 问题答案: 使用它意味着每个经过身份验证的用户,但是你禁用了匿名访问,因此将无法