扩展SINGLE_TABLE继承



我有一个使用单表继承的现有应用程序:

/**
 * @Entity
 * @Table(name="entities")
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="class", type="string")
 * @DiscriminatorMap({
 *      "channel" = "Channel",
 *      "aggregator" = "Aggregator"
 * })
 * @HasLifecycleCallbacks
 */

通过 DQL 搜索实体:

$dql = 'SELECT a FROM VolkszaehlerModelEntity a

获取 channel 类型的所有实体,aggregator很好,这就是生成的 SQL:

SELECT e0_.id AS id0, e0_.uuid AS uuid1, e0_.type AS type2, e0_.class AS class6, 
FROM entities e0_ 
WHERE e0_.class IN ('channel', 'aggregator')

当我尝试通过扩展鉴别器映射来扩展继承时

 * @DiscriminatorMap({
 *      "channel" = "Channel",
 *      "aggregator" = "Aggregator",
 *      "generic" = "GenericEntity"
 * })
找不到

新的generic类型,因为SQL保持不变 - 将查询限制为channelaggregator

如果有任何关于控制 SQl 生成SINGLE_TABLE继承的提示,我将不胜感激。

事实证明,问题出在缓存上。上面给出的实现是正确的,但元数据没有刷新(这很令人困惑,因为我可以创建新的实体类型,但找不到它):

$config->setMetadataCacheImpl($cache);
// rebuild cache!
$cache->deleteAll();

相关内容

  • 没有找到相关文章

最新更新