2011-10-29 7 views
2

今日、私は自分のエンティティの1つが欠落していたことに気付きました。 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> 

私は何をする必要が働いて、それを持っていますか?エンティティを自分で書くか、何かを変更するだけですか?

+0

「それでも、私はそれを正常に再生成できませんでした」とはどういう意味ですか?どのように "エンティティを再生成する"のですか? –

答えて

1

私は、アノテーションからクラスとプロキシを生成するcommand line toolについてお話していると思います。一般的にツールはそれほど良くありません。継承には多くの問題があり、コンポジット(はデュアルではない)のキーがあなたのケースにあります。

エンティティクラスの注釈を手動で修正してください。このツールは使用しないでください。あなたがそれをひどく使いたい場合は、最初にすべてを生成し、エラーツールを解決して解決できないツールを忘れて、それまで存在していたツールを忘れてしまいました:)

Btw。 Doctrineは複合キーをサポートしていますが、その使用はお勧めしません。本当に必要ない場合は、使用しないでください。 documentationを参照してください。

関連する問題