我有一个使用Doctrine 2.0的项目,效果很好。我尝试升级到2.2.2,但是我注意到了一些差异:
/ ** *实体\日志 * * @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
堆栈跟踪:
答案 0 :(得分:1)
我猜你是从数据库生成实体的。
Doctrine 2.2.2由于某种原因生成了这些本身无法解析的注释。这显然是一个错误。
作为一种解决方法,您可以配置生成器以提供2.0样式的注释。使用solution from dminer并在生成之前添加以下行:
$generator->setAnnotationPrefix("");