我面临着为使用 MySQL 5.0 而编写的遗留系统,现在需要将其迁移到 MySQL 5.5(要求)。我发现有一列名为maxvalue
,这似乎是 MySQL 5.5 中的系统字。因此,我所有包含此列的 Hibernate 查询都会给出语法错误:
原因:java.sql.BatchUpdateException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'maxvalue 附近使用的正确语法
似乎 Hibernate 不会自动反引号 ` 围绕字段名称。如果我提取查询,反引号`maxvalue`
它在 MySQL 5.5 中正确运行。
我找到了如何为特定字段/表显式强制反引号的解决方案。问题是我不确定有多少其他列名会产生这样的问题。有没有办法告诉 Hibernate 自动反引号所有表/列名?(这将产生有效的 SQL,我不知道为什么它在默认情况下对 MySQL 不这样做)。
编辑:这个讨论几乎让我相信我想要的东西是不可能的。