在尝试使用Doctrine 2的持久冲洗方法进行插入时,我根本无法使用它。元数据设置为生成一个值(我尝试过AUTO和IDENTITY但没有成功),但它仍然没有自动递增。我还注意到数据库的架构," id"列未设置为自动递增。有问题的实体不包含前/后持续功能。
XXXX类型的实体缺少字段“id'”的已分配ID。此实体的标识符生成策略要求在调用EntityManager#persist()之前填充ID字段。如果您想要自动生成标识符,则需要相应地调整元数据映射。
/**
* @Id
* @Column(type="integer")
* @GeneratedValue
*/
protected $id;
我想知道是否有人对此有任何见解,因为我似乎无法找到任何谷歌或stackoverflow结果有帮助。谢谢!
答案 0 :(得分:0)
您必须在注释前添加@ORM\
,如下所示:
use Doctrine\ORM\Mapping as ORM;
...
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
protected $id;
答案 1 :(得分:0)
因此,问题似乎是由于有多个列带有@GeneratedValue注释(即使它设置为NONE)。删除那些并留下唯一的$ id修复了问题。
答案 2 :(得分:0)
我通过清除缓存来解决此问题。