JavaHibernate使用保留字作为列名更新mySQL表中的行的变通方法
我需要连接到具有列名(如“like”)的表的旧数据库。解决此问题的最合理的方法是重命名列,但db管理员不希望对现有db执行任何更改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设置文件中
有没有办法解决这个问题,强制hibernate添加backtick 根据上下文的不同,有不同的解决方法:
- 对于XML映射文件,请用引号1括起关键字
- 对于Hibernate注释,用引号2括住关键字
- 您可以告诉Hibernate引用所有SQL标识符:
在Hibernate设置文件中hibernate.globally_quoted_identifiers=true
- 在HQL中,可以通过自定义转换器转义别名;有关示例,请参见
1-不同的来源说使用特定于数据库的引号或反勾号,Hibernate应该知道如何翻译。我无法对此进行检查。这两种方法都可以奏效
2-显然可以使用双引号(转义)和方括号。根据上下文的不同,有多种解决方法:
- 对于XML映射文件,请用引号1括起关键字
- 对于Hibernate注释,用引号2括住关键字
- 您可以告诉Hibernate引用所有SQL标识符:
在Hibernate设置文件中hibernate.globally_quoted_identifiers=true
- 在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]注释中使用方括号的。。。