You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Symfony中使用EntityValueResolver获取实体时设置PESSIMISTIC_WRITE锁模式

在Symfony中为MapEntity设置悲观写锁(PESSIMISTIC_WRITE)

要给通过#[MapEntity]自动注入的实体设置PESSIMISTIC_WRITE锁模式,只需在注解中添加options配置,传入对应的锁常量即可,具体操作如下:

  1. 先引入包含锁模式常量的命名空间:
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
  1. 修改控制器方法的#[MapEntity]注解,通过options参数指定锁模式:
#[Route('/product/{id}')]
public function show(
    #[MapEntity(options: ['lockMode' => EntityManagerInterface::LOCK_PESSIMISTIC_WRITE])] 
    Product $product
): Response {
    // 此时$product已被施加悲观写锁,可安全执行后续操作
    // ...
}

补充说明

Symfony的EntityValueResolver解析实体时,会读取options里的lockMode配置,在调用Doctrine的EntityManager::find()方法时传入该锁模式,从而在数据库层面为目标数据行施加悲观写锁——其他事务无法修改该实体,直到当前事务提交或回滚。

内容的提问来源于stack exchange,提问作者FabioFLX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:01:57