Doctrine2 Сопоставить сущности с составными внешними ключами в составных первичных ключах

У меня есть модель, которая имеет много таблиц, но в этом случае нам нужно только три.

Дело в том, что составной первичный ключ одного из них также является первым (составной тоже), и Symfony выдает это исключение:

MappingException: невозможно отобразить объектВаш \ SomethingBundle \ Entity \ Empleado» с составным первичным ключом как частью первичного ключа другого объектаВаш \ SomethingBundle \ Entity \ EmpleadoHorario # empleado.

Здесь я объясняю отношения: 1º

 Салон, у него есть первичный ключID2º

 Empleado, он имеет составной первичный ключID, Salon_id и, также в первичном ключе, приоритетный ключ, ссылающийся на салон:Salon_id3º

 EmpleadoHorario: у него есть составной первичный ключFecha, Empleado_id, Salon_id и, также в первичном ключе, два внешних ключа, ссылающихся на салон:Salon_idи Эмплеадо:Empleado_id, Salon_id

У всех отношений есть и обратный союз. Вот код:

Салон Сущность:

/**
 * Salon
 *
 * @ORM\Table(name="salon")
 * @ORM\Entity
 */
class Salon
{
    /**
     * @var string
     *
     * @ORM\Column(name="id", type="string", length=50, nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    // More fields...

    /**
     * @var array_collection 
     * 
     * @ORM\OneToMany(targetEntity="Empleado", mappedBy="salon")
     */
    private $empleados;

    /**
     * @var array_collection 
     * 
     * @ORM\OneToMany(targetEntity="EmpleadoHorario", mappedBy="salon")
     */
    private $empleadoHorarios;

    // Getters & Setters...
}

Empleado Сущность:

/**
 * Empleado
 *
 * @ORM\Table(name="empleado")
 * @ORM\Entity
 */
class Empleado
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="bigint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\JoinColumn(name="salon_id", referencedColumnName="id", nullable=false)
     * @ORM\ManyToOne(targetEntity="Salon", inversedBy="empleados")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $salon;

    // More fields...

    /**
     * @var array_collection 
     * 
     * @ORM\OneToMany(targetEntity="EmpleadoHorario", mappedBy="salon")
     */
    private $empleadoHorarios;

    // Getters & setters...

}

И наконецEmpleadoHorario Сущность:

/**
 * EmpleadoHorario
 *
 * @ORM\Table(name="empleado_horario")
 * @ORM\Entity
 */
class EmpleadoHorario
{
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="fecha", type="date", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $fecha;

    /**
     * @var string
     *
     * @ORM\JoinColumn(name="salon_id", referencedColumnName="id", nullable=false)
     * @ORM\ManyToOne(targetEntity="Salon", inversedBy="empleadoHorarios")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $salon;

    /**
     * @var integer
     *
     * @ORM\ManyToOne(targetEntity="Empleado", inversedBy="empleadoHorarios")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="salon_id", referencedColumnName="salon_id", nullable=false),
     *   @ORM\JoinColumn(name="empleado_id", referencedColumnName="id", nullable=false)
     * })
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $empleado;

    // More fields...

    // Getters & Setters...

}

Как я уже говорил выше, проблема, похоже, заключается вEmpleadoHorario.empleado поле, которое является частью составного первичного ключа, а также составного внешнего ключа.

Другие ответы через StackOverflow.com предлагают наследование карт, но я неЯ даже не знаю, как это работает. Я пытался дважды послечитая это но я не могне решить мою проблему.

Ответы на вопрос(2)

Ваш ответ на вопрос