#1086 - Passing type information when building meta-mappings for JTI and STI inheritances
This commit is contained in:
parent
40849f8ae1
commit
f1170c84a4
@ -80,13 +80,15 @@ abstract class AbstractEntityInheritancePersister extends BasicEntityPersister
|
|||||||
* @param string $tableAlias
|
* @param string $tableAlias
|
||||||
* @param string $joinColumnName
|
* @param string $joinColumnName
|
||||||
* @param string $className
|
* @param string $className
|
||||||
|
* @param string $type
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getSelectJoinColumnSQL($tableAlias, $joinColumnName, $className)
|
protected function getSelectJoinColumnSQL($tableAlias, $joinColumnName, $className, $type)
|
||||||
{
|
{
|
||||||
$columnAlias = $this->getSQLColumnAlias($joinColumnName);
|
$columnAlias = $this->getSQLColumnAlias($joinColumnName);
|
||||||
$this->rsm->addMetaResult('r', $columnAlias, $joinColumnName);
|
|
||||||
|
$this->rsm->addMetaResult('r', $columnAlias, $joinColumnName, false, $type);
|
||||||
|
|
||||||
return $tableAlias . '.' . $joinColumnName . ' AS ' . $columnAlias;
|
return $tableAlias . '.' . $joinColumnName . ' AS ' . $columnAlias;
|
||||||
}
|
}
|
||||||
|
@ -457,7 +457,14 @@ class JoinedSubclassPersister extends AbstractEntityInheritancePersister
|
|||||||
? $mapping['inherited']
|
? $mapping['inherited']
|
||||||
: $this->class->name;
|
: $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']
|
? $mapping['inherited']
|
||||||
: $subClass->name;
|
: $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])
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,15 @@ class SingleTablePersister extends AbstractEntityInheritancePersister
|
|||||||
|
|
||||||
foreach ($assoc['targetToSourceKeyColumns'] as $srcColumn) {
|
foreach ($assoc['targetToSourceKeyColumns'] as $srcColumn) {
|
||||||
$className = isset($assoc['inherited']) ? $assoc['inherited'] : $this->class->name;
|
$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])
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user