1

Doctrine 2.0を使用するプロジェクトがあり、かなりうまく機能します。2.2.2 にアップグレードしようとしましたが、いくつかの違いに気付きました。

/** * Entities\Log * * @ORM\Table(name="log") * @ORM\Entity(repositoryClass="Repositories\LogRepository") */

2.2.2 に示されている方法です。

しかし、これは 2.0.x での表示方法です。

/** * Entities\Log * * @Table(name="log") * @Entity(repositoryClass="Repositories\LogRepository") */

2.2.2 を 2.0 のように変換すると、すべて問題なく読み込まれ、キャッシュにオブジェクトのコピーが作成されます。ただし、そのままにしておくと、次のエラーが発生します。

アプリケーション パス: /www/sites/diracianbilling-repository/trunk/application
致命的なエラー: キャッチされない例外 'Doctrine\ORM\Mapping\MappingException' とメッセージ 'Class Entities\Log は有効なエンティティまたはマップされたスーパー クラスではありません'。/usr/share/php/Doctrine/ORM/Mapping/MappingException.php:147 スタック トレース:

4

1 に答える 1

1

データベースからエンティティを生成したと思います。

Doctrine 2.2.2 は、何らかの理由で、それ自体では解析できないこれらの注釈を生成します。これは明らかにバグです。

回避策として、2.0 スタイルの注釈を提供するようにジェネレーターを構成できます。dminerのソリューションを使用して、生成の直前に次の行を追加します。

$generator->setAnnotationPrefix("");
于 2012-10-16T15:01:53.577 に答える