让休眠BACKQUOTE所有的表/列名(Make hibernate backquote all t

2019-07-20 02:00发布

我面临着写有MySQL 5.0中工作的遗留系统,现在需要将其迁移到MySQL 5.5(要求)。 我发现,一列被命名为maxvalue ,这似乎是在MySQL 5.5系统字。 因此,包括此列的所有我的Hibernate查询给语法错误:

java.sql.BatchUpdateException:通过引起您的SQL语法错误; 检查对应于你的MySQL服务器版本使用附近“MAXVALUE正确的语法手册

看来,Hibernate不自动但是反引号`周围的字段名。 如果我提取出查询,反引号`maxvalue`它在MySQL 5.5中正确运行。

我已经找到解决方案如何显式地强制特定领域/表后引号。 问题是,我不知道其他的列名会多少产生这样的问题。 有没有办法告诉Hibernate自动BACKQUOTE所有的表/列名? (这将产生有效的SQL,我不知道为什么它不为MySQL做,默认情况下)。

编辑 : 这次讨论几乎让我相信,我想是不可能的。

Answer 1:

有一个非文件用于此目的属性。 使用,

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

要么

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


文章来源: Make hibernate backquote all table / column names