我正在开发一个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)]
由于