【问题标题】:How to force Hibernate-Envers to use quotes around fields name?如何强制 Hibernate-Envers 在字段名称周围使用引号?
【发布时间】:2011-03-25 15:34:00
【问题描述】:

我有一个表,其属性定义如下: @Column(name="\"SERIAL#\"")

当 Hibernate 插入数据时,一切正常。 但是对于 Hibernate-Envers(HE),HE 忘记用双引号将字段名称括起来。

如何强制它在字段周围使用双引号?

【问题讨论】:

    标签: java eclipse hibernate double-quotes hibernate-envers


    【解决方案1】:

    您要使用双引号,还是要转义名称?如果您只想转义,请使用反引号 (`),Hibernate 会将其转换为您的数据库用于转义的任何机制。所以,你的例子是:

    @Column(name="`SERIAL#`")
    

    只是出于好奇:为什么在列名中需要一个#?我一直认为特殊字符在标识符中是个坏主意:-)

    【讨论】:

    • 我正在为数据库构建一个小型监控工具。我监控的数据库之一公开了带有这些字符的表。
    • Hibernate 理解反引号,但 Hibernate Envers 不理解。
    • 我正在使用 PostgeSQL,它使用双引号和 not 反引号。然而,Hibernate 无论如何都在使用反引号。你能看看我的situation吗?
    【解决方案2】:

    为了解决这个问题,我设法不在字段名中使用“#”,因此 Hibernate 和 Hibernate Envers 都不必转义字段名。

    编辑

    事实上,这是 Hibernate Envers 3.6.2.Final 中的一个错误。以后应该会解决的。

    编辑 2: 该错误已在 Hibernate Envers 3.6.3 和 Hibernate Envers 4.0.0Alpha 中修复。

    编辑 3: 该错误已在 Hibernate Core 3.6.4.Final 中修复。

    【讨论】:

      猜你喜欢
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多