3

我有一个 Place 和一个 Placetype 实体。My Place 实体的 id 属性设置为 AUTO:

/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

但是当我想持久化一个对象时,我得到了以下错误:

blabla\Entity\Place 类型的实体缺少分配的 ID。此实体的标识符生成策略要求在调用 EntityManager#persist() 之前填充 ID 字段。如果您想要自动生成标识符,则需要相应地调整元数据映射。

你知道如何解决这个问题吗?

谢谢你的帮助

4

4 回答 4

5

它通过替换这个来工作:

/**
 * @var integer $uid
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

对此:

/**
 * @var integer $uid
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 */
private $id;
于 2012-11-15T15:25:35.637 回答
1

试试这个:

/**
 * @var integer $uid
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

将策略设置为“身份”

于 2012-06-22T15:30:00.310 回答
1

当外键配置错误时,可能会发生此错误。在这种情况下,您需要使用 IDENTITY 策略。例子:

一种啤酒有一个饮酒者

beer.id_drinker = 饮酒者.id

但在这儿 :

ALTER TABLE `drinker`
ADD CONSTRAINT `drinker_ibfk_1` FOREIGN KEY (`id`) REFERENCES `beer` (`id_drinker`);

哪个是坏的>drinker.id = beer.id_drinker

好的:

ALTER TABLE `beer`
ADD CONSTRAINT `beer_ibfk_1` FOREIGN KEY (`id_drinker`) REFERENCES `drinker` (`id`);
于 2014-09-24T00:37:11.147 回答
0

我使用 symfony 3.2.x 如果使用 yml 你应该添加这个:

generator:
            strategy: IDENTITY

完整的例子:

id:
    id:
        type: integer
        nullable: false
        options:
            unsigned: false
        id: true
        generator:
            strategy: IDENTITY

问候

于 2017-05-23T01:22:51.070 回答