/**
  * {@inheritdoc}
  */
 public function embeddedFieldToColumnName($propertyName, $embeddedColumnName, $className = null, $embeddedClassName = null)
 {
     $defaultName = $this->defaultNamer->embeddedFieldToColumnName($propertyName, $embeddedColumnName, $className, $embeddedClassName);
     /**
      * @var NamingStrategy $concurrentNamer
      */
     foreach ($this->concurrentNamers as $concurrentNamer) {
         if (($newProposal = $concurrentNamer->embeddedFieldToColumnName($propertyName, $embeddedColumnName, $className, $embeddedClassName)) != $defaultName) {
             return $newProposal;
         }
     }
     return $defaultName;
 }
 /**
  * Inline the embeddable class
  *
  * @param string $property
  * @param ClassMetadataInfo $embeddable
  */
 public function inlineEmbeddable($property, ClassMetadataInfo $embeddable)
 {
     foreach ($embeddable->fieldMappings as $fieldMapping) {
         $fieldMapping['originalClass'] = isset($fieldMapping['originalClass']) ? $fieldMapping['originalClass'] : $embeddable->name;
         $fieldMapping['declaredField'] = isset($fieldMapping['declaredField']) ? $property . '.' . $fieldMapping['declaredField'] : $property;
         $fieldMapping['originalField'] = isset($fieldMapping['originalField']) ? $fieldMapping['originalField'] : $fieldMapping['fieldName'];
         $fieldMapping['fieldName'] = $property . "." . $fieldMapping['fieldName'];
         if (!empty($this->embeddedClasses[$property]['columnPrefix'])) {
             $fieldMapping['columnName'] = $this->embeddedClasses[$property]['columnPrefix'] . $fieldMapping['columnName'];
         } elseif ($this->embeddedClasses[$property]['columnPrefix'] !== false) {
             $fieldMapping['columnName'] = $this->namingStrategy->embeddedFieldToColumnName($property, $fieldMapping['columnName'], $this->reflClass->name, $embeddable->reflClass->name);
         }
         $this->mapField($fieldMapping);
     }
 }