我目前面临在 JPA 中锁定实体的问题。我有一个来自数据库的几个实体的列表。对于每个元素,都有一个编辑按钮,用于加载用于编辑该条目的视图。每次客户端尝试编辑条目时,我都想检查实体是否被锁定,以防止客户端甚至加载实体的编辑掩码。
我加载实体的方法:
[...]
mail = (EMailKonto) query.getSingleResult();
System.out.println(getLock(mail).toString());
setLock(mail, LockModeType.PESSIMISTIC_WRITE);
System.out.println(getLock(mail).toString());
调用的方法:
public void setLock(T entity, LockModeType lock)
{
getEntityManager().lock(entity, lock);
}
public LockModeType getLock(T entity)
{
return getEntityManager().getLockMode(entity);
}
发生的情况是第一个 syso 打印 NONE,因为没有应用锁。然后锁被设置,第二个 syso 打印 PESSIMISTIC_WRITE。当我刷新页面或使用另一个选项卡/浏览器并单击同一实体的编辑按钮时,第一个 syso 应该打印 PESSIMISTIC_WRITE,因为我从未删除锁定,但它再次打印 NONE。你们能帮我理解如何实现这种功能吗?
问候