考虑查询
INSERT INTO order (id, key, value) VALUES (?, ?, ?);
上述查询中存在MySQL语法错误,因为order
和key
是MySQL中的关键字。所以解决方案是在查询中添加反引号。
INSERT INTO `order` (id, `key`, value) VALUES (?, ?, ?);
Hibernate足够愚蠢,不会自动执行此操作。根据{{3}},通过在hibernate配置文件中添加以下属性,可以解决表名的问题。
<property name="hibernate.globally_quoted_identifiers">true</property>
但这只会增加数据库名称和表名的反引号。列名仍然存在问题。
如何向所有列名称添加反引号?
答案 0 :(得分:0)
我找到了一种在hibernate中为列名添加反引号的方法。
找到相对列的属性。
<property name="key" type="string">
<column name="key" />
</property>
使用方括号将列名称包围。
<property name="key" type="string">
<column name="[key]" />
</property>
但这是一个艰苦的过程,因为您必须逐一为所有this answer对所有列执行此操作。最好的方法是避免添加MySQL keywords作为数据库,表或列名称。
参考文献: