我有一個表的屬性定義如下: @Column(name="\"SERIAL#\"")
如何強制Hibernate-Envers在字段名稱周圍使用引號?
當Hibernate插入數據,一切工作正常。 但是它涉及到Hibernate-Envers(HE),他忘記用雙引號包圍字段名稱。
我該如何強制它使用領域的雙引號?
我有一個表的屬性定義如下: @Column(name="\"SERIAL#\"")
如何強制Hibernate-Envers在字段名稱周圍使用引號?
當Hibernate插入數據,一切工作正常。 但是它涉及到Hibernate-Envers(HE),他忘記用雙引號包圍字段名稱。
我該如何強制它使用領域的雙引號?
爲了解決這個問題,我設法在字段名中不使用'#',因此Hibernate和Hibernate Envers都不得不轉義字段名。
編輯:
事實上它在休眠Envers 3.6.2.Final的錯誤。它應該稍後解決。
編輯2: 該錯誤已在Hibernate Envers 3.6.3和Hibernate Envers 4.0.0Alpha中修復。
編輯3: 該問題已在Hibernate Core 3.6.4.Final中修復。
你想用雙引號,還是你想逃避這個名字?如果你只是想逃避,使用反引號(`),Hibernate會將它轉換爲數據庫用於轉義的任何機制。所以,你的例子應該是:
@Column(name="`SERIAL#`")
只是出於好奇:你爲什麼需要列名中的#號?我一直認爲特殊字符在標識符中是一個壞主意:-)
我正在爲數據庫構建一個小型監控工具。我監視的其中一個數據庫用這些字符顯示錶。 – Stephan 2011-03-28 08:54:58
Hibernate瞭解反引號,但Hibernate * Envers *沒有。 – Stephan 2011-03-28 09:43:45