当前位置: 首页 > 面试题库 >

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

宿建本
2023-03-14
问题内容

我面临着要与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它不这样做)。

编辑
:这种讨论几乎使我相信我想要的是不可能的。


问题答案:

为此,有一个未记录的属性。采用,

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

要么

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


 类似资料:
  • 问题内容: 我似乎在Hibernate中映射列表时遇到问题。在我们的项目中有一类用含有类与含有。 Hibernate 是否可以使用注释进行映射?我的意思是,因为它没有注释? 问候 问题答案: 用途: 资料来源: 7.2.3。基本类型和可嵌入对象的集合

  • 问题内容: 我想在MS SQL中使用hibernate模式创建一个对象,该表的名称为“ user”。这没用!。我认为此问题可能是由表/实体的名称引起的,用户是关键字。拥有名称为“ user”的表该怎么办? 问题答案: 我应该使用重音符号()。

  • 问题内容: 我正在浏览hibernate文档,并遇到了逆属性的概念。我是Hibernate的新手,所以我很难正确理解该概念。 http://docs.jboss.org/hibernate/orm/3.3/reference/zh- CN/html/collections.html#collections- bidirectional 从上面的代码中,应用于类别,因此我知道类别是相反的一端。 但是

  • 问题内容: 我有一个MySQL DB表,我不能修改但必须在其中插入值。它有一列,我需要插入其中。 现在,我的.hbm.xml文件具有: 因此,生成的插入查询失败。添加[key]后,现在包含了生成的SQL,但这也失败了。在检查MYSql Workbench时,我发现它可以正常工作。 但是,如果我在上述文件中更改了此设置,则使用[key]时它会还原为“ key”。有人可以指导我如何添加和带来所需的插入

  • 问题内容: 我有一个无法修改的MySQL数据库表,但必须将值插入其中。它有一列,我需要插入其中。 现在,我的.hbm.xml文件具有: 因此生成的插入查询失败。添加[key]时,现在包含了生成的SQL,但这也失败了。在检查MYSql Workbench时,我发现它可以正常工作。 但是,如果我在上述文件中更改了此设置,则使用[key]时它会还原为“ key”。有人可以指导我如何添加和带来所需的插入物

  • 问题内容: 在Hibernate中删除表中所有行 的最佳方法是什么? 如果我遍历一个集合并称其在我所知范围内没有执行。 如果使用其他选项,则不会影响持久性上下文。 如果没有更好的选择,何时应该使用这些方法? 问题答案: 如果没有什么要层叠的,请使用HQL删除 如果您有层叠,请迭代该集合并分别删除每个集合。 问题出在以下事实:休眠在内部处理级联,而不是将其留给数据库。因此,发送查询不会触发内部级联,