与@embedded列的关系



我有ID的@Embeddable类:

/**
 * @ORMEmbeddable()
 */
final class Id
{
    /**
     * @ORMId()
     * @ORMColumn(type="string")
     */
    private $id;
    //getters, setters, etc
}

和两个具有@ManyToOne关系的类:

/**
 * @ORMEntity()
 */
final class Gist
{
    /**
     * @var Id
     *
     * @ORMId()
     * @ORMEmbedded(class="AppEntityId")
     */
    private $id;
    /**
     * @var User
     *
     * @ORMManyToOne(targetEntity="AppEntityUser")
     */
    private $user;
    //getters, setters, etc
}

User类:

/**
 * @ORMEntity()
 */
final class User implements UserInterface
{
    /**
     * @var Id
     *
     * @ORMEmbedded(class="AppEntityId")
     *
     */
    private $id;
    //getters, setters, etc
}

当我尝试创建架构时,我会发现错误: No mapping found for field 'id' on class 'AppEntityUser'.。我做错了什么?

没有解决方案。https://github.com/doctrine/doctrine2/issues/7094。

@embeddable内的标识符的支持还不到,对不起。

我建议不要在ID字段上使用@embeddable。因为它行不通。正常声明您的身份证字段,应该有效。

/**
 * @ORMEntity()
 */
class Gist
{
    /**
     * @ORMId
     * @ORMGeneratedValue
     * @ORMColumn(type="integer")
     */
    private $id;
    /**
     * @var User
     *
     * @ORMManyToOne(targetEntity="AppEntityUser")
     * @ORMJoinColumn(name="user_id", referencedColumnName="id")
     */
    private $user;
    //getters, setters, etc
}
/**
 * @ORMEntity()
 */
class User implements UserInterface
{
    /**
     * @ORMId
     * @ORMGeneratedValue
     * @ORMColumn(type="integer")
     */
    private $id;
    //getters, setters, etc
}
单向

并且永远不要将实体声明为最终类,请参见:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/reference/architecture.html#entity

相关内容

  • 没有找到相关文章