Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 悲观主义者的奇怪行为?_Jpa_Jakarta Ee_Ejb 3.0_Jpa 2.0 - Fatal编程技术网

Jpa 悲观主义者的奇怪行为?

Jpa 悲观主义者的奇怪行为?,jpa,jakarta-ee,ejb-3.0,jpa-2.0,Jpa,Jakarta Ee,Ejb 3.0,Jpa 2.0,我是JPA2.0锁定新手,所以可能是我遗漏了一些东西 使用NetBeans,我尝试调试一个无状态会话Bean。我尝试在两个线程之间切换以检查概念: em.lock(entity, LockModeType.PESSIMISTIC_WRITE); em.persist(entity); try { em.flush(); } catch (Exception e) { System.out.println("Already Locked

我是JPA2.0锁定新手,所以可能是我遗漏了一些东西

使用NetBeans,我尝试调试一个无状态会话Bean。我尝试在两个线程之间切换以检查概念:

   em.lock(entity, LockModeType.PESSIMISTIC_WRITE);
    em.persist(entity);
    try {
        em.flush();
    } catch (Exception e) {
        System.out.println("Already Locked!");
    }
我让第一个过程结束

em.flush()

(没有例外)。然后,我切换到第二个过程。令人惊讶的是,在第一行之后暂停,仅在第一个进程退出函数之后才继续

注意:使用LockModeType.OPTIMISTIC时,一切正常

这是正常的行为吗?我错过什么了吗?它的行为方式似乎有所不同

谢谢


丹尼这是完全正常的行为。锁在事务提交/回滚时被释放,调用em.flush()时不会发生这种情况。

这是完全正常的行为。锁在事务提交/回滚中被释放,调用em.flush()后不会发生这种情况.

因此,在这种情况下,提交/回滚仅在函数终止后发生?如果这是事务的边界所在。因此,在这种情况下,提交/回滚仅在函数终止后发生?如果这是事务的边界所在。