我有一个表,其属性定义如下:
@Column(name="\"SERIAL#\"")
当 Hibernate 插入数据时,一切正常。但是对于 Hibernate-Envers(HE),HE 忘记用双引号将字段名称括起来。
我如何强制它在字段周围使用双引号?
我有一个表,其属性定义如下:
@Column(name="\"SERIAL#\"")
当 Hibernate 插入数据时,一切正常。但是对于 Hibernate-Envers(HE),HE 忘记用双引号将字段名称括起来。
我如何强制它在字段周围使用双引号?
您要使用双引号,还是要转义名称?如果您只想转义,请使用反引号 (`),Hibernate 会将其转换为数据库用于转义的任何机制。所以,你的例子是:
@Column(name="`SERIAL#`")
只是出于好奇:为什么在列名中需要 # ?我一直认为特殊字符在标识符中是个坏主意:-)
为了解决这个问题,我设法不在字段名称中使用“#”,因此 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 中修复。