gpt4 book ai didi

java - Openjpa锁不起作用

转载 作者:行者123 更新时间:2023-11-30 04:12:30 26 4
gpt4 key购买 nike

在一个使用OpenJPA 2.1和oracle数据库的项目中,我使用混合锁模式,默认具有乐观锁,但也可以使用悲观锁。但它并不像我预期的那样对我有用。所以我为 openjpa 锁定编写了一个小测试。

Persistance.xml 配置:

<properties>

<property name="openjpa.Optimistic" value="false" />
<property name="openjpa.LockManager" value="mixed" />
<!-- <property name="openjpa.LockManager"value="mixed(VersionCheckOnReadLock=true,VersionUpdateOnWriteLock=true)" /> -->
<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
<property name="openjpa.slice.ConnectionDriverName" value="oracle.jdbc.OracleDriver" />
<property name="openjpa.slice.ConnectionURL" value="jdbc:oracle:thin:******" />
<property name="openjpa.slice.ConnectionUserName" value="user" />
<property name="openjpa.slice.ConnectionPassword" value="userpassword" />
<property name="openjpa.jdbc.SynchronizeMappings" value="validate" />
<property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)" />
<property name="openjpa.Log"
value="DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=TRACE" />
</properties>

我的简单测试代码:

Configuration config = entityManager.find(Configuration.class, 10025984L);
entityManager.lock(config, LockModeType.PESSIMISTIC_WRITE);

在 sql 跟踪中可以看到,在调用 OpenJPA 的锁定方法后,不会对数据库执行任何其他查询。单个sql查询:

TRACE  [Thread-7] openjpa.jdbc.SQL - <t 874198043, conn 1773300146> executing prepstmnt 1809148885 SELECT t0.VERSION FROM Configuration t0 WHERE t0.ID = ? [params=?] 

我做错了什么以及如何获得一个实体实例的锁定?

最佳答案

我找到了解决方案。原因在于 JPA 设置。我只是删除属性:

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

一切都变得很好。

关于java - Openjpa锁不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com