Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使hibernate对所有表/列名进行反引号_Java_Mysql_Hibernate_Escaping - Fatal编程技术网

Java 使hibernate对所有表/列名进行反引号

Java 使hibernate对所有表/列名进行反引号,java,mysql,hibernate,escaping,Java,Mysql,Hibernate,Escaping,我面临着为使用MySQL 5.0而编写的遗留系统,现在需要将其迁移到MySQL 5.5(要求)。我发现有一列名为maxvalue,这似乎是MySQL 5.5中的系统字。因此,所有包含此列的Hibernate查询都会出现语法错误: 原因:java.sql.BatchUpdateException:您的 SQL语法;查看与MySQL服务器对应的手册 要使用near'maxvalue的正确语法的版本 Hibernate似乎不会自动在字段名周围加上反引号。如果我提取查询,则backquote`maxva

我面临着为使用MySQL 5.0而编写的遗留系统,现在需要将其迁移到MySQL 5.5(要求)。我发现有一列名为
maxvalue
,这似乎是MySQL 5.5中的系统字。因此,所有包含此列的Hibernate查询都会出现语法错误:

原因:java.sql.BatchUpdateException:您的 SQL语法;查看与MySQL服务器对应的手册 要使用near'maxvalue的正确语法的版本

Hibernate似乎不会自动在字段名周围加上反引号。如果我提取查询,则backquote
`maxvalue`
它在MySQL 5.5中正确运行

我发现了如何显式强制特定字段/表的反引号。问题是,我不确定还有多少其他列名会产生这样的问题有没有办法告诉Hibernate自动反引用所有表/列名?(这将生成有效的SQL,我不知道为什么默认情况下MySQL不会这样做)

编辑:几乎让我相信我想要的是不可能的

有一个用于此目的的属性。使用

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

true

因为hibernate是一个开源项目……)@JermaineXu是的,我们都有时间停止我们正在做的任何事情,去学习和修复别人的代码……太棒了!谢谢现在这个属性至少在某个地方被记录了下来。遗憾的是,我运行的是Hibernate3.3,而这个属性似乎是在3.5中引入的。我无法验证此属性是否实际工作,但我正在将您的答案标记为已接受。对于使用Spring的用户:application.properties属性为:“Spring.jpa.properties.hibernate.global_quoted_identifiers=true”“没有未记录的功能。如果用户不知道某个功能,则该功能为非功能。摆脱它;这只会使源代码复杂化。”--这只会在表名和数据库名中添加反勾号。列仍然是相同的…
插入到“默认设置”(帐户、键、值)值(?、、?)
。问题在于列名
<property name="hibernate.globally_quoted_identifiers">true</property>