1
0
mirror of synced 2025-02-20 22:23:14 +03:00

#1086 - Passing type information when building meta-mappings for JTI and STI inheritances

This commit is contained in:
Marco Pivetta 2014-11-11 23:41:04 +01:00
parent 40849f8ae1
commit f1170c84a4
3 changed files with 29 additions and 5 deletions

View File

@ -80,13 +80,15 @@ abstract class AbstractEntityInheritancePersister extends BasicEntityPersister
* @param string $tableAlias
* @param string $joinColumnName
* @param string $className
* @param string $type
*
* @return string
*/
protected function getSelectJoinColumnSQL($tableAlias, $joinColumnName, $className)
protected function getSelectJoinColumnSQL($tableAlias, $joinColumnName, $className, $type)
{
$columnAlias = $this->getSQLColumnAlias($joinColumnName);
$this->rsm->addMetaResult('r', $columnAlias, $joinColumnName);
$this->rsm->addMetaResult('r', $columnAlias, $joinColumnName, false, $type);
return $tableAlias . '.' . $joinColumnName . ' AS ' . $columnAlias;
}

View File

@ -457,7 +457,14 @@ class JoinedSubclassPersister extends AbstractEntityInheritancePersister
? $mapping['inherited']
: $this->class->name;
$columnList[] = $this->getSelectJoinColumnSQL($tableAlias, $srcColumn, $className);
$targetClass = $this->em->getClassMetadata($mapping['targetEntity']);
$columnList[] = $this->getSelectJoinColumnSQL(
$tableAlias,
$srcColumn,
$className,
$targetClass->getTypeOfColumn($mapping['sourceToTargetKeyColumns'][$srcColumn])
);
}
}
@ -495,7 +502,14 @@ class JoinedSubclassPersister extends AbstractEntityInheritancePersister
? $mapping['inherited']
: $subClass->name;
$columnList[] = $this->getSelectJoinColumnSQL($tableAlias, $srcColumn, $className);
$targetClass = $this->em->getClassMetadata($mapping['targetEntity']);
$columnList[] = $this->getSelectJoinColumnSQL(
$tableAlias,
$srcColumn,
$className,
$targetClass->getTypeOfColumn($mapping['sourceToTargetKeyColumns'][$srcColumn])
);
}
}
}

View File

@ -88,7 +88,15 @@ class SingleTablePersister extends AbstractEntityInheritancePersister
foreach ($assoc['targetToSourceKeyColumns'] as $srcColumn) {
$className = isset($assoc['inherited']) ? $assoc['inherited'] : $this->class->name;
$columnList[] = $this->getSelectJoinColumnSQL($tableAlias, $srcColumn, $className);
$targetClass = $this->em->getClassMetadata($mapping['targetEntity']);
$columnList[] = $this->getSelectJoinColumnSQL(
$tableAlias,
$srcColumn,
$className,
$targetClass->getTypeOfColumn($mapping['sourceToTargetKeyColumns'][$srcColumn])
);
}
}
}