首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解锁JPA下的一个实体

如何解锁JPA下的一个实体
EN

Stack Overflow用户
提问于 2013-06-07 11:25:57
回答 1查看 5.4K关注 0票数 4

全。

我使用纯JPA编写了一个程序,它的提供者是hibernate,底层数据库是Azure SQL DB。这个程序将在分布式环境下运行,它的许多副本将在不同的服务器上运行。

我需要一些这样的程序(对于ex-):

1,锁定指定的学生实体,

2、检查类实体状态,如果状态为1,则继续,否则,尝试锁定该类实体,直到获得该类的锁

3、检查状态(由于分布式环境,可能会被其他服务器上的其他线程修改),如果仍然不是1,则做点什么,将状态修改为1,

4、解锁此类实体

5、做其他事情(仍然保持对当前学生实体的锁定)

我被以下代码seg锁住了:

代码语言:javascript
运行
复制
    Map<String,Object> map = new HashMap<String, Object>();
    map.put("javax.persistence.lock.timeout", 0);
    return this.getEntityManager().find( cls, id,  LockModeType.PESSIMISTIC_WRITE,map);

但是,我不知道如何在第四步释放锁,有没有什么方法可以只在一个实体上实现锁,并保留其他锁?

非常感谢,任何建议都将被采纳。

EN

回答 1

Stack Overflow用户

发布于 2013-06-07 16:33:03

您必须将锁定模式设置为none

代码语言:javascript
运行
复制
  em.lock(myEntity, LockModeType.NONE);

请参阅http://www.objectdb.com/java/jpa/persistence/lock

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16975764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档