代码之家  ›  专栏  ›  技术社区  ›  pokken

javahibernate使用保留字作为列名更新mySQL表中的行的解决方法

  •  0
  • pokken  · 技术社区  · 8 年前

    我需要连接到具有列名(如“like”)的表的旧数据库。最合乎逻辑的解决方法是重命名列,但是db admin不想对现有db执行任何更改。

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

    2 回复  |  直到 8 年前
        1
  •  2
  •   Stephen C    7 年前

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

    • 1 .

    • 2

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

      hibernate.globally_quoted_identifiers=true
      

    • 在HQL中,您可以 别名 通过自定义变压器;请参阅 https://stackoverflow.com/a/5754720/139985 举个例子。

    参考文献:


    1-不同的消息来源说使用特定于数据库的引号或反勾号,Hibernate应该知道如何翻译这些引号或反勾号。我不能检查这个。两种方法都可行。

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

        2
  •  0
  •   Karthik R    8 年前

    你能检查并尝试将这些设置标记为真吗?

    hibernate.globally_quoted_identifiers = true
    hibernate.globally_quoted_identifiers_skip_column_definitions = true
    

    从Hibernate文档中,我引用: ( https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/appendices/Configurations.html

    hibernate.globally\u引用的\u标识符 (例如。 对还是错 应该引用所有数据库标识符。
    (例如。 对还是错 (默认值))
    javax.persistence.Column javax.persistence.JoinColumn ,虽然它避免了由于全局引用而引用列定义,但它们仍然可以在注释/xml映射中显式引用。

    推荐文章