没有为实体指定标识符/主键(...)每个实体必须具有标识符/主键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有为实体指定标识符/主键(...)每个实体必须具有标识符/主键相关的知识,希望对你有一定的参考价值。
我有Peticion
实体,但缺少某些东西,因为出现以下错误:
No identifier/primary key specified for Entity (...) Every Entity must have and identifier/primary key
这是实体代码:
<?php
namespace Project\UsuarioBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Peticion
*
* @ORM\Table(name="peticion")
* @ORM\Entity
*/
class Peticion
{
/**
*
* @ORM\Id
* @ORM\ManyToMany(targetEntity="Project\UsuarioBundle\Entity\Usuario", inversedBy="usuNick2")
* @ORM\JoinTable(name="USUARIO",
* joinColumns={@ORM\JoinColumn(name="USU_NICK_1", referencedColumnName="USU_NICK")},
* inverseJoinColumns={@ORM\JoinColumn(name="USU_NICK_2", referencedColumnName="USU_NICK")}
* )
*/
private $usuNick1;
/**
*
* @ORM\Id
* @ORM\ManyToMany(targetEntity="Project\UsuarioBundle\Entity\Usuario", mappedBy="usuNick1"))
*/
private $usuNick2;
/**
* @var \DateTime
*
* @ORM\Column(name="PET_FECHA", type="date", nullable=false)
*/
private $fecha;
您需要指定id字段并删除其他@ORM\Id
注释。 Identifiers / Primary Keys在学说文件。
每个实体类都需要一个标识符/主键。您可以使用@Id标记注释指定充当标识符的字段。
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
就我而言,发生了什么事:
我创建实体文件,并将其放在具有数据库模式的实体目录中。
但事情就是这样,我还创建了一个实体的YML文件并将其放在Resources / config / doctrine中,没有架构。 Symfony正在寻找YML内部的架构。删除YML文件后,我的实体文件中的模式运行正常。
解决方案是将id字段添加到EntityName.orm.yml id:true例如:AppBundle \ Entity \ Supplier:
type: entity
table: sylius_supplier
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
name: .......
以上是关于没有为实体指定标识符/主键(...)每个实体必须具有标识符/主键的主要内容,如果未能解决你的问题,请参考以下文章
org.hibernate.AnnotationException:没有为使用 JPA XML 实体映射的实体指定标识符
Spring Boot JPA Hibernate:即使实体类中存在@Id,也没有为实体错误指定标识符
Hibernate,没有为实体指定标识符,用于映射 String id
org.hibernate.AnnotationException:没有为实体指定标识符 - 即使它是
异常:org.hibernate.AnnotationException:没有为实体指定标识符:jpa.tenants.DataSourceConfig
调用 init 方法失败;嵌套异常是 org.hibernate.AnnotationException:没有为实体指定标识符