【发布时间】:2013-09-12 10:47:33
【问题描述】:
我正在使用 JPA2.1 开发应用程序。我有以下问题。
我正在尝试以这种方式锁定实体:
Book book = em.find(Book.class, 12);
em.lock(book, LockModeType.PESSIMISTIC_WRITE);
但如果尝试从另一个 Windows 浏览器或客户端访问 id=12 的实体,系统不会抛出 PessimisticLockException?
我哪里错了?
【问题讨论】:
-
如何将浏览器代码封装在事务中?会不会是你的第一笔交易在其他浏览器尝试获取锁之前被释放?
-
你能解释得更好吗?我正在使用类似 Spring 的应用程序容器和类似 UI 框架的 vaadin
-
悲观锁需要 EntityManager 与事务相关联,正如下面的答案中提到的,锁仅在事务的生命周期内保持。看看你是如何获取 em 的,它是如何与事务关联的,以及它何时回滚/提交,与其他线程可能获取它们的锁的时间相比
标签: java jpa eclipselink