Doctrine2正在尝试插入聚合字段

时间:2015-06-15 09:13:03

标签: symfony doctrine-orm fosrestbundle jmsserializerbundle

我正在开发一个Symfony2应用程序,其中Doctrine2为ORM,FOSRestBundle为REST API。

我的许多成员都得到了PK,他们的字段无法自动生成(用户必须输入它们)。因为我正在使用JMSSerializerBundle,所以我必须创建聚合字段来填充PK字段。实际上,如果我将PK字段放入发送的JSON中,JMS会尝试进行更新(这会产生感觉)。总而言之,当JMS将聚合反序列化为我的对象时,我填充PK字段。

这里有关的学说变量:

 /**
 * @var string
 *
 * @Accessor(getter="getPostCPRO", setter="setPostCPRO")
 * @ORM\Column(type="string")
 */
private $post_cpro;

public function getPostCPRO()
{
    return $this->post_cpro;
}

public function setPostCPRO($post_cpro)
{
    $this->cpro = $post_cpro;
}

/**
 * @var string
 *
 * @Accessor(getter="getPostNPROVER", setter="setPostNPROVER")
 * @ORM\Column(type="string")
 */
private $post_nprover;

public function getPostNPROVER()
{
    return $this->post_nprover;
}

public function setPostNPROVER($post_nprover)
{
    $this->nprover = $post_nprover;
}

/**
 * @var string
 *
 * @ORM\Column(name="CPRO", type="string", length=17)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="NONE")
 */
private $cpro;

/**
 * @var string
 *
 * @ORM\Column(name="NPROVER", type="decimal")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="NONE")
 */
private $nprover;

CPRO和NPROVER是PK,POST_CPRO和POST_NPROVER是聚合字段。

但是,当我试图坚持时,我发现了SQL错误,因为Doctrine想要插入PK和聚合字段。 如何防止Doctrine INSERT POST_CPRO和POST_NPROVER?

这里是我的postAction():

public function postProAction(Request $request)
{
    $detachedEntity = $this->deserialize($request, 'ProductBundle\Entity\Pro');
    $em = $this->getDoctrine()->getManager();
    $em->persist($detachedEntity);
    $em->flush();

    return $detachedEntity;
}

和SQL错误:

"message": "An exception occurred while executing 'INSERT INTO PRO (post_cpro, post_nprover, CPRO, NPROVER, ...) with params [null, null, \"ASSOC000000000009\", \"2\", ...] SQLSTATE[HY000]: General error: 207 General SQL Server error: Check messages from the SQL Server [207] (severity 16) [(null)]

由于

0 个答案:

没有答案