使hibernate反引所有表/列名称

时间:2013-02-18 08:29:38

标签: java mysql hibernate escaping

我面临使用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几乎让我相信我想要的是不可能的。

1 个答案:

答案 0 :(得分:35)

为此目的有一个non-documented属性。使用,

<property name="hibernate.globally_quoted_identifiers" value="true"/>

<property name="hibernate.globally_quoted_identifiers">true</property>