Index: ../../../typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php =================================================================== --- ../../../typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php (revision ) +++ ../../../typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php (revision ) @@ -631,6 +631,7 @@ $tableName = $this->dataMapper->convertClassNameToTableName($className); $columnMap = $this->dataMapper->getDataMap($className)->getColumnMap($propertyName); $parentKeyFieldName = $columnMap->getParentKeyFieldName(); + $childKeyFieldName = $columnMap->getChildKeyFieldName(); $childTableName = $columnMap->getChildTableName(); if ($columnMap->getTypeOfRelation() === Tx_Extbase_Persistence_Mapper_ColumnMap::RELATION_HAS_ONE) { if (isset($parentKeyFieldName)) { @@ -651,8 +652,8 @@ $className = $this->dataMapper->getType($className, $propertyName); } elseif ($columnMap->getTypeOfRelation() === Tx_Extbase_Persistence_Mapper_ColumnMap::RELATION_HAS_AND_BELONGS_TO_MANY) { $relationTableName = $columnMap->getRelationTableName(); - $sql['unions'][$relationTableName] = 'LEFT JOIN ' . $relationTableName . ' ON ' . $tableName . '.uid=' . $relationTableName . '.uid_local'; - $sql['unions'][$childTableName] = 'LEFT JOIN ' . $childTableName . ' ON ' . $relationTableName . '.uid_foreign=' . $childTableName . '.uid'; + $sql['unions'][$relationTableName] = 'LEFT JOIN ' . $relationTableName . ' ON ' . $tableName . '.uid=' . $relationTableName . '.' . $parentKeyFieldName; + $sql['unions'][$childTableName] = 'LEFT JOIN ' . $childTableName . ' ON ' . $relationTableName . '.' . $childKeyFieldName. '=' . $childTableName . '.uid'; $className = $this->dataMapper->getType($className, $propertyName); } else { throw new Tx_Extbase_Persistence_Exception('Could not determine type of relation.', 1252502725);