我有一个实体,其中包含一个整数列(compositeId)和一个字符串列(asin),我希望这两个列都作为复合键使用。因此,我在文档中查找相关信息:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html,但是当我尝试加载我的存储库时...
我做错了什么? 当我在我的ID表中删除@generatedValue时,它可以工作。 但是我需要在我的ID列中自动生成值。 我没有在我的ID列上有任何@Id注释,只有@generatedValue,而在我的两个@Id列上,我没有任何带有@generatedValue的注释,但我却得到了这个错误...
$myEntity = $em->getRepository(MyEntity::class);
我收到了这个错误信息:
在AppBundle\Entity\MyEntity中,组合主键不允许使用单一id。
这是我的实体(Entity):
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @Entity(repositoryClass="AppBundle\Repository\MyEntityRepository")
* @Table(name="my_entity")
*/
class MyEntity {
/**
* @Column(type="integer")
* @GeneratedValue()
*/
protected $id;
/**
* @var integer
* @Id
* @Column(type="integer", name="composite_id")
*/
protected $compositeId;
/**
* @var string
* @Id
* @Column(type="string", name="asin")
*/
protected $asin;
/**
* @var string
* @Column(type="string", name="sku")
*/
protected $sku;
/**
* @var string
* @Column(type="string", name="ean")
*/
protected $ean;
/**
* @codeCoverageIgnore
* @return mixed
*/
public function getId() {
return $this->id;
}
/**
* @param mixed $id
*
* @return MyEntity;
*/
public function setId($id) {
$this->id = $id;
return $this;
}
/**
* @codeCoverageIgnore
* @return int
*/
public function getCompositeId() {
return $this->compositeId;
}
/**
* @param int $compositeId
*
* @return MyEntity;
*/
public function setCompositeId($compositeId) {
$this->compositeId = $compositeId;
return $this;
}
/**
* @codeCoverageIgnore
* @return string
*/
public function getAsin() {
return $this->asin;
}
/**
* @param string $asin
*
* @return MyEntity;
*/
public function setAsin($asin) {
$this->asin = $asin;
return $this;
}
/**
* @codeCoverageIgnore
* @return string
*/
public function getSku() {
return $this->sku;
}
/**
* @param string $sku
*
* @return MyEntity;
*/
public function setSku($sku) {
$this->sku = $sku;
return $this;
}
/**
* @codeCoverageIgnore
* @return string
*/
public function getEan() {
return $this->ean;
}
/**
* @param string $ean
*
* @return MyEntity;
*/
public function setEan($ean) {
$this->ean = $ean;
return $this;
}
}
我做错了什么? 当我在我的ID表中删除@generatedValue时,它可以工作。 但是我需要在我的ID列中自动生成值。 我没有在我的ID列上有任何@Id注释,只有@generatedValue,而在我的两个@Id列上,我没有任何带有@generatedValue的注释,但我却得到了这个错误...
/** * @Column(type="integer") * @GeneratedValue() */ protected $id;
- Alok Patel@Id
属性,这样它就不会被视为表的主键。 - Alok Patel