所以我有一个名为" Release"的MySQL数据库表,遗憾的是它恰好是一个保留的关键字。我跑了
<bean class="org.springframework.batch.item.database.IbatisPagingItemReader">
<property name="queryId" ref="query" />
<property name="sqlMapClient" ref="sqlMapClient"/>
<property name="dataSource" ref="datasource"/>
<property name="pageSize" value="1000"/>
</bean>
<bean class="org.springframework.batch.item.database.IbatisBatchItemWriter">
<property name="sqlMapClient" ref="sqlMapClient" />
<property name="statementId" ref="query" />
<property name="dataSource" ref="datasource"/>
</bean>
现在出现SQL错误:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近发布t0 WHERE t0.ReleaseID = 2&#39;在第1行
所以我手动转义了课程php bin/console doctrine:generate:entities AppBundle
中的表名。
AppBundle\Entity\Release
我跑了
/**
* Release
*
* @ORM\Table(name="`Release`", indexes={@ORM\Index(name="FK_ProductID_Release", columns={"ProductID"})})
* @ORM\Entity
*/
class Release
但我仍然得到同样的错误。还有什么可以通知Doctrine这个变化?
答案 0 :(得分:0)
我发现了这个问题,这很奇怪。我按照http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html的指南进行了操作 使用命令
php bin/console doctrine:mapping:import --force AppBundle xml
生成现有数据库的描述。这在app / src / AppBundle / Resources / config / doctrine中创建了文件,这些文件似乎优先于实体中的Annotations。这应该在文档中提到。
<强>更新强> 具体来说这部分
php bin/console doctrine:mapping:convert annotation ./src
文档中的应更改为
php bin/console doctrine:mapping:convert xml ./src