Java 如何使用JPA释放锁定的行?

Java 如何使用JPA释放锁定的行?,java,jpa,locking,eclipselink,pessimistic,Java,Jpa,Locking,Eclipselink,Pessimistic,我正在使用JPA2.0的EclipseLink实现,它允许悲观锁定。我知道如何锁定实体,但如何解除锁定?起初,我认为这一切都是在事务中处理的(换句话说,在提交事务之前,实体是锁定的),但事实似乎并非如此 我尝试了一个快速的谷歌搜索(似乎这应该是很明显的),但我没有找到任何东西…在睡了一会儿之后。。。早上再做一些测试,我相信我已经解决了我的问题 因此锁实际上是在事务中处理的。但是,当我测试代码时,我能够使用EntityManager.find(Class,key)方法(未指定锁定策略)检索锁定的行

我正在使用JPA2.0的EclipseLink实现,它允许悲观锁定。我知道如何锁定实体,但如何解除锁定?起初,我认为这一切都是在事务中处理的(换句话说,在提交事务之前,实体是锁定的),但事实似乎并非如此


我尝试了一个快速的谷歌搜索(似乎这应该是很明显的),但我没有找到任何东西…

在睡了一会儿之后。。。早上再做一些测试,我相信我已经解决了我的问题

因此锁实际上是在事务中处理的。但是,当我测试代码时,我能够使用
EntityManager.find(Class,key)
方法(未指定锁定策略)检索锁定的行

我错误地认为,通过在一行上加锁,该行无法读取,句号。然而,我重新阅读了JPA对
悲观的
悲观的
的定义,并注意到了我的问题:

悲观读-实体被锁定在数据库上,防止任何其他事务获得悲观写锁。 悲观写入-实体被锁定在数据库上,防止任何其他事务获取悲观读取或悲观写入锁定。

不一定阻止所有读取,它只是阻止另一个事务在行上放置
读或写锁