Doctrine orm 如何使用;“类表继承”;在原则2中使用XML映射

Doctrine orm 如何使用;“类表继承”;在原则2中使用XML映射,doctrine-orm,symfony,class-table-inheritance,Doctrine Orm,Symfony,Class Table Inheritance,我正在尝试使用Doctrine 2的“类表继承特性”和XML映射(Symfony 2 PR 7) XML超类CatalogProduct的XML定义: <?xml version="1.0" encoding="UTF-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XML

我正在尝试使用Doctrine 2的“类表继承特性”和XML映射(Symfony 2 PR 7)

XML超类CatalogProduct的XML定义:

<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                          http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="MyApp\CatalogBundle\Entity\CatalogProduct" table="catalog_product" inheritance-type="JOINED">
        <discriminator-column name="discr" type="string" />
        <discriminator-map>
            <discriminator-mapping value="book" class="MyApp\CatalogBundle\Entity\CatalogBook" />
        </discriminator-map>
        <id name="id" type="integer" column="id">
            <generator strategy="AUTO"/>
            <sequence-generator sequence-name="tablename_seq" allocation-size="100" initial-value="1" />
        </id>
        <field name="name" column="name" type="string" length="50" nullable="true" unique="false" />
        <field name="isPublic" column="is_public" type="boolean" />        
    </entity>    
</doctrine-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                          http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="MyApp\CatalogBundle\Entity\CatalogBook" table="catalog_book">
        <id name="id" type="integer" column="id">
            <generator strategy="AUTO"/>
            <sequence-generator sequence-name="tablename_seq" allocation-size="100" initial-value="1" />
        </id>
        <field name="author_name" column="author_name" type="string" length="50" nullable="true" unique="false" />
    </entity>    
</doctrine-mapping>
导致了一个例外:

Fatal error: Call to undefined method MyApp\CatalogBundle\Entity\CatalogBook::setName()

我想,我在XML中遗漏了一些东西,它告诉CatalogBook实体扩展CatalogProduct。但是我在Doctrine 2文档或Google上找不到任何有帮助的东西。

生成实体不会为您生成继承层次结构,因为这在语义上是不可能的。您必须在调用条令:generate:entities之后自己执行此操作。

generate entities不会为您生成继承层次结构,因为这在语义上是不可能的。在调用条令:generate:entities之后,您必须自己做这件事

Fatal error: Call to undefined method MyApp\CatalogBundle\Entity\CatalogBook::setName()