gpt4 book ai didi

java - 为什么 Spring 不允许读操作排他锁?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:43 26 4
gpt4 key购买 nike

有谁知道为什么 Spring 不允许将 @Lock(LockModeType.PESSIMISTIC_WRITE) 放在读操作上?

@Lock(LockModeType.PESSIMISTIC_WRITE)
Human findByNameAndStreet(String name, String street);

还有为什么 EntityManager 本身允许您在读取操作上放置独占锁?

entityManager.createQuery("select o from Human o where o.name= :name and o.street= :street", Human.class)
.setLockMode(LockModeType.PESSIMISTIC_WRITE).setParameter("name", name).setParameter("street", street).getSingleResult();

最重要的是,在 Spring 中的同一个选择查询中,我无法放置 WRITE 锁,而使用 EntityManager 我可以。我真的不知道为什么 Spring 不允许你做同样的事情。

最佳答案

要使用锁定,您必须有适当的事务边界。如果您没有它们,那么唯一可以使用锁的调用是 findByNameAndStreet

但是,如果您从本身是事务性的服务方法调用此方法,则锁将跨越整个事务性服务方法。

关于java - 为什么 Spring 不允许读操作排他锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45708665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com