JavaHibernate使用保留字作为列名更新mySQL表中的行的变通方法

JavaHibernate使用保留字作为列名更新mySQL表中的行的变通方法,java,mysql,hibernate,hibernate-criteria,Java,Mysql,Hibernate,Hibernate Criteria,我需要连接到具有列名(如“like”)的表的旧数据库。解决此问题的最合理的方法是重命名列,但db管理员不希望对现有db执行任何更改 有没有办法解决这个问题,强制hibernate添加backtick 根据上下文的不同,有不同的解决方法: 对于XML映射文件,请用引号1括起关键字 对于Hibernate注释,用引号2括住关键字 您可以告诉Hibernate引用所有SQL标识符: hibernate.globally_quoted_identifiers=true 在Hibernate设置文件中

我需要连接到具有列名(如“like”)的表的旧数据库。解决此问题的最合理的方法是重命名列,但db管理员不希望对现有db执行任何更改


有没有办法解决这个问题,强制hibernate添加backtick

根据上下文的不同,有不同的解决方法:

  • 对于XML映射文件,请用引号1括起关键字

  • 对于Hibernate注释,用引号2括住关键字

  • 您可以告诉Hibernate引用所有SQL标识符:

    hibernate.globally_quoted_identifiers=true
    
    在Hibernate设置文件中

  • 在HQL中,可以通过自定义转换器转义别名;有关示例,请参见

参考资料:


1-不同的来源说使用特定于数据库的引号或反勾号,Hibernate应该知道如何翻译。我无法对此进行检查。这两种方法都可以奏效


2-显然可以使用双引号(转义)和方括号。

根据上下文的不同,有多种解决方法:

  • 对于XML映射文件,请用引号1括起关键字

  • 对于Hibernate注释,用引号2括住关键字

  • 您可以告诉Hibernate引用所有SQL标识符:

    hibernate.globally_quoted_identifiers=true
    
    在Hibernate设置文件中

  • 在HQL中,可以通过自定义转换器转义别名;有关示例,请参见

参考资料:


1-不同的来源说使用特定于数据库的引号或反勾号,Hibernate应该知道如何翻译。我无法对此进行检查。这两种方法都可以奏效


2-显然可以使用双引号(转义)和方括号。

您能检查并尝试将这些设置标记为true吗

hibernate.globally_quoted_identifiers = true
hibernate.globally_quoted_identifiers_skip_column_definitions = true
从Hibernate文档中,我引用:()

休眠。全局引用标识符(例如正确或错误(默认值)) 是否应引用所有数据库标识符。
休眠。全局引用标识符跳过列定义(例如真或假(默认值))
假设hibernate.globally“u quoted”标识符为true,这允许全局引用跳过由
javax.persistence.column
javax.persistence.JoinColumn
等定义的列定义,同时避免由于全局引用而引用列定义,它们仍然可以在注释/xml映射中显式引用


您能检查并尝试将这些设置标记为true吗

hibernate.globally_quoted_identifiers = true
hibernate.globally_quoted_identifiers_skip_column_definitions = true
从Hibernate文档中,我引用:()

休眠。全局引用标识符(例如正确或错误(默认值)) 是否应引用所有数据库标识符。
休眠。全局引用标识符跳过列定义(例如真或假(默认值))
假设hibernate.globally“u quoted”标识符为true,这允许全局引用跳过由
javax.persistence.column
javax.persistence.JoinColumn
等定义的列定义,同时避免由于全局引用而引用列定义,它们仍然可以在注释/xml映射中显式引用


@Stephen C的答案似乎比我在参考文章中的答案更详细。感谢您的帮助,但在我当前的设置中设置hibernate.globally_quoted_identifiers=true似乎不起作用,但我的配置中可能存在冲突。无论如何,我还是按照@Stephen C的一篇建议文章解决了这个问题,这篇文章是关于在[column_name]注释中使用方括号的…@Stephen C的答案似乎比我的参考文章的答案更详细。谢谢你的帮助,但似乎在我当前的设置中设置hibernate.globally_quoted_identifiers=true不起作用,但我的配置中可能存在冲突。无论如何,我还是按照@Stephen C建议的一篇文章来解决这个问题,这篇文章是关于在[column_name]注释中使用方括号的。。。