使休眠反引号所有表/列名称

2022-09-02 19:56:26

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

由以下原因引起:java.sql.BatchUpdateException:您的SQL语法中存在错误;检查与您的MySQL服务器版本相对应的手册,以获取在“最大值”附近使用的正确语法

似乎Hibernate不会自动在字段名称周围反向引用' 。如果我提取查询,则反向引用它在MySQL 5.5中正常运行。`maxvalue`

我已经找到了如何显式强制特定字段/表的反引号的解决方案。问题是我不确定有多少其他列名称会产生这样的问题。有没有办法告诉Hibernate自动反引号所有表/列名称?(这将产生有效的SQL,我不知道为什么默认情况下它不会为MySQL执行此操作)。

编辑这个讨论几乎让我相信我想要的是不可能的。


答案 1

有一个未记录的属性用于此目的。用

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

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

答案 2