我对我的实体有简单的表继承,例如:

/**
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"base"="BaseArticle", "extended"="ExtendedArticle"})
*/
class BaseArticle extends \Models\BaseModel{
   ...
}
class ExtendedArticle extends BaseArticle{
    /**
    * @column(type="string")
    */
    protected $extendedProperty;
}
我需要对所有文章类型进行查询,但是在某些类型中,它会通过扩展ExtendedArticle中的某些属性来限制查询,即:
SELECT a FROM BaseArticle a WHERE (a INSTANCE OF BaseAricle) OR (a INSTANCE OF ExtendedArticle AND a.extendedProperty = "xy")
这给了我以下异常(exception):

所以问题是,如何在查询父类时访问子代的属性?

最佳答案

你不能解决方法:

SELECT a
FROM BaseArticle a
WHERE
    a INSTANCE OF BaseAricle
    OR a.id IN (
        SELECT ea.id
        FROM ExtendedArticle ea
        WHERE ea.extendedProperty = "xy"
    )

关于sql - 原则2-单表继承-子实体的访问属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11956206/

10-12 22:57