Ошибка при создании объекта с составным первичным ключом - PullRequest
2 голосов
/ 29 октября 2011

Сегодня я понял, что мне не хватает одного из моих существ. Я сгенерировал метаданные XML, а затем сгенерировал сущность. Я пытался восстановить сущность, но все же мне не удалось ее успешно восстановить.

Эта сущность имеет составной первичный ключ. И каждая часть этого ключа на самом деле является ключом foregin.

SQL:

CREATE TABLE lajki (
    _wydarzenie_id INT NOT NULL,
    _uzytkownik_id INT NOT NULL,
    _lajk_data DATETIME NOT NULL,
    PRIMARY KEY (_wydarzenie_id, _uzytkownik_id),
    FOREIGN KEY (_uzytkownik_id) REFERENCES uzytkownicy(_uzytkownik_id),
    FOREIGN KEY (_wydarzenie_id) REFERENCES wydarzenia(_wydarzenie_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;

метаданные XML:

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Lajki" table="lajki">
    <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
    <id name="wydarzenieId" type="integer" column="_wydarzenie_id"/>
    <id name="uzytkownikId" type="integer" column="_uzytkownik_id"/>
    <field name="lajkData" type="datetime" column="_lajk_data"/>
    <lifecycle-callbacks/>
  </entity>
</doctrine-mapping>

Что мне нужно сделать, чтобы это работало? Должен ли я сам написать сущность или мне просто нужно что-то изменить?

1 Ответ

1 голос
/ 19 декабря 2011

Полагаю, вы говорите о инструменте командной строки , который генерирует классы и прокси из аннотаций. Вообще инструмент не очень хороший. У него много проблем с наследованием, и, кажется, с составными ( не двойными ) ключами в вашем случае.

Попробуйте исправить аннотации в ваших классах сущностей вручную, не используйте инструмент. Если вы хотите использовать его так плохо, сгенерируйте все только в первый раз, исправьте ошибки, которые инструмент не может устранить, и забудьте о том, что этот инструмент когда-либо существовал:)

Btw. Хотя Doctrine поддерживает составные ключи, их использование не рекомендуется. Так что не используйте их, если они действительно не нужны. См. документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...