悲观锁会产生连锁反应吗?

时间:2019-02-23 06:25:04

标签: jpa pessimistic-locking

这是我的数据结构。

@Entity
public class JobEntity {
    @Id
    private Long id;

    private String name;

    @OneToMany(fetch = FetchType.EAGER,cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, mappedBy = "parentJob")
    private List<JobEntity> subJobs;

    @ManyToOne
    @JoinColumn(name = "parent_job")
    private JobEntity parentJob;
}

因此,作业实体具有树数据结构,如果我想使用JPA添加如下所示的悲观锁:

Map<String, Object> properties = new HashMap<>();
map.put("javax.persistence.lock.scope", PessimisticLockScope.EXTENDED);
entityManager.find(JobEntity.class, 1L,LockModeType.PESSIMISTIC_WRITE, properties);

悲观锁是否会对树数据结构中所有引用的子行起作用? 还是只是ID为“ 1L”的行?还是只是直接从“ 1L”中引用的行?

1 个答案:

答案 0 :(得分:0)

它应该可以工作,但是请注意,如果您使用的是Hibernate,那么不幸的是它还不受支持

  

JPA标准所指定的javax.persistence.lock.scope尚不支持。

来自Hibernate Docs

Related Ticket