5

教義2のプロキシクラスプロパティにアクセスしているときにEntityNotFoundExceptionが発生する可能性のある原因は何ですか?とにかく、以下は私のエンティティの構造です:

/**
 * @ORM\Table(name="comments")
 *
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="comment_type", type="smallint")
 * @ORM\DiscriminatorMap({
 *    1 = "VisitorComment",
 *    2 = "MemberComment"
 * })
 */
 class Comment
 {
    //with common properties of its subclasses
 }

サブクラスは次のとおりです。

/**
 * @ORM\Table(name="member_comments")
 */
class MemberComment extends Comment
{
    /**
     * owning side
     *
     * @var Member $author
     * 
     * @ORM\ManyToOne(targetEntity="Member")
     * @ORM\JoinColumn(name="author_id", referencedColumnName="id", nullable=false)
     */
     private $author;

    /**
     * Set author
     *
     * @param Member $author
     */
    public function setAuthor($author)
    {
        $this->author = $author;
    }

    /**
     * Get author
     *
     * @return Member
     */
    public function getAuthor()
    {
        return $this->author;
    }
}


/**
 * @ORM\Table(name="visitor_comments")
 */
class VisitorComment extends Comment
{
   /**
    * owning side
    *
    * @var Visitor $author
    * 
    * @ORM\ManyToOne(targetEntity="Visitor")
    * @ORM\JoinColumn(name="author_id", referencedColumnName="id", nullable=false)
    */
    private $author;

    /**
     * Set author
     *
     * @param string $author
     */
     public function setAuthor($author)
     {
        $this->author = $author;
     }

    /**
     * Get author
     *
     * @return Visitor
     */
    public function getAuthor()
    {
        return $this->author;
    }
}

例外は、$ comment-> getAuthor()-> getFirstName()<メンバーまたはVisitorエンティティのいずれかである作成者がfirstNameプロパティを持っていると仮定して>を呼び出すと発生します。この場合のgetAuthor()は、VisitorProxyまたはMemberProxyのいずれかのプロキシクラスを返します。

親切に私を助けてください。私はまだ教義に不慣れです。

4

2 に答える 2

2

Floricel が発見したように、これは、Proxy クラスが参照するテーブルを指す列の無効な外部キーが原因である可能性があります。

于 2013-06-04T16:33:29.057 に答える
0

@Dave Lancea は正しいです。FK を非 Null に変更した後、このエラーが発生し始め、壊れたレコードを手動で更新して、既存のエンティティを指すようにし、問題が解決しました。

于 2013-09-14T05:05:21.463 に答える