[英]Table exclusive lock with JPA
我不认为JPA原生支持这一点 - 您总是锁定单个实体或每个查询结果的实体。 始终允许插入,因为它们是新实体。 您可以使用本机查询来使用数据库服务器支持的SQL来触发锁定,或者您需要以编程方式锁定插入。
通过编程方式我的意思是你需要在每次插入之前获取一个锁。 您可以通过创建一个单独的锁实体类,每个实体用于要锁定的表,然后在每次插入之前,使用如下锁定锁读取特定实体:
em.createQuery("select l from TableLock l where l.entity = :entityName", TableLock.class)
.setParameter("entityName", MyEntity.class.getSimpleName())
.setLockMode(LockModeType.PESSIMISTIC_READ)
.getResultList();
em.persist(new MyEntity());
当然,您还应该检查数据库中是否存在锁实体,如果不存在,请先创建它,实体字段是您实体的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.