我面临使用MySQL 5.0编写的遗留系统,现在需要将其迁移到MysQL 5.5(要求)。我发现一列名为maxvalue
,这似乎是MySQL 5.5中的系统字。因此,包含此列的所有Hibernate查询都会出现语法错误:
引起:java.sql.BatchUpdateException:你的错误 SQL语法;查看与MySQL服务器对应的手册 在'maxvalue
附近使用正确语法的版本
似乎Hibernate不会自动反复引用`围绕字段名称。如果我提取查询,则反引用`maxvalue`
它在MySQL 5.5中正确运行。
我发现solution如何明确强制特定字段/表的反引号。问题是我不确定有多少其他列名会产生这样的问题。 有没有办法告诉Hibernate自动反引所有表/列名?(这将产生有效的SQL,我不知道为什么默认情况下它不会为MySQL做这个)。
编辑:This discussion几乎让我相信我想要的是不可能的。
答案 0 :(得分:35)
为此目的有一个non-documented属性。使用,
<property name="hibernate.globally_quoted_identifiers" value="true"/>
或
<property name="hibernate.globally_quoted_identifiers">true</property>