6

Symfony2 でエンティティの継承を使用する際に問題があります。ここに私の2つのクラスがあります:

use Doctrine\ORM\Mapping as ORM;

/**
 * @Orm\MappedSuperclass
 */
class Object
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
}


/**
  * @Orm\MappedSuperclass
 */
class Book extends Object
{
}

php app/console doctrine:schema:createを実行すると、次のエラーが発生します。

[Doctrine\ORM\Mapping\MappingException]  
Duplicate definition of column 'id' on entity 'Name\SiteBundle\Entity\Book' in a field or discriminator column mapping.

何が原因でしょうか?

ありがとう :)

アップデート:

そうです、私はこれを見逃しました。現在、両方のクラスがエンティティである単一テーブルの継承を使用しています。

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"object" = "Object", "book" = "Book"})
 */

しかし、それでも同じエラーメッセージが表示されます。

4

7 に答える 7

8

実際、注釈を使用するだけでなく、エンティティを定義していた Resources/config/doctrine/ に yml ファイルが見つかりました。

これらのファイルを削除しましたが、現在は機能しています。

ご協力いただきありがとうございます !

于 2013-10-17T09:41:18.607 に答える
2

同じ問題とエラーメッセージがありましたが、@ user2090861が言ったように、私にとっては逆でした。

(未使用)を削除する必要がありました

use Doctrine\ORM\Mapping as ORM;

実際のマッピングは orm.xml ファイルから取得されます。

この例外により、過去 2 日間、私は気が狂いそうになりました。

于 2016-12-02T08:51:29.793 に答える
0

どのエンティティにも、少なくとも 1 つのフィールドが含まれている必要があります。

書籍エンティティに少なくとも 1 つのフィールドを追加する必要があります

/**
 * @Orm\MappedSuperclass
*/
class Book extends Object
{
 /**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
  private $id;
}
于 2013-10-17T06:48:03.110 に答える
0

同じエラー メッセージが表示されましたが、別の間違いを犯していました。

クラス B には ID があり、拡張されたクラス A にも ID (非公開ではなく保護) がありました。そのため、クラス B から ID を削除する必要がありました。

于 2014-09-25T13:50:26.510 に答える