1

我有一个使用 Doctrine 2.0 的项目,效果很好。我尝试升级到 2.2.2,但是我注意到了几个不同之处:

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

是2.2.2中的显示方式。

但这就是它在 2.0.x 中的显示方式:

/** * 实体\日志 * * @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 回答