原则 2 将主键复合为外键



我已经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 创建自己的方法并添加连接列

相关内容

  • 没有找到相关文章

最新更新