我已经ClassA
映射到具有ManyToOne关系的实体ClassB
(到目前为止很简单)。
class ClassA{
/**
* @var string
* @ORMId
* @ORMColumn(name="keyA", type="string", length=255)
*/
private $keyA;
/**
* @var ClassB $classB
* @ORMManyToOne(targetEntity="ClassB", inversedBy="classAs")
* @ORMJoinColumns({
* @ORMJoinColumn(name="ClassB_keyB", referencedColumnName="keyB")
* })
*/
private $classB;
}
这是ClassB
:
class ClassB{
/**
* @var string
* @ORMId
* @ORMColumn(name="keyB", type="string", length=255)
*/
private $keyB;
/**
*
* @var ClassC $classC
* @ORMId
* @ORMManyToOne(targetEntity="ClassC", inversedBy="classBs")
* @ORMJoinColumns({
* @ORMJoinColumn(name="ClassC_keyC", referencedColumnName="keyC")
* })
*/
private $classC;
/**
* @var ArrayCollection $classAs
* @ORMOneToMany(targetEntity="ClassA", mappedBy="classB")
*/
private $classAs;
}
如您所见,ClassB
包含一个复合主键(2 个实体和列)。
这是ClassC
:
class ClassC{
/**
* @var string
* @ORMId
* @ORMColumn(name="keyC", type="string", length=255)
*/
private $keyC;
/**
* @var ArrayCollection $classBs
* @ORMOneToMany(targetEntity="ClassB", mappedBy="classC")
*/
private $classBs;
}
当我尝试显示 ClassA 的所有实体(使用 findAll()
)时,我得到这个异常Missing value for primary key classC on ERP................ClassB
我在这里错过了什么?!
您必须
在 ClassARepository 创建自己的方法并添加连接列