在我們的模型中POJO的一些方法已經被註釋是這樣的:修改註釋在運行時的屬性值在Java
@Column(name="cli_clipping_id", updatable=false, columnDefinition = "varchar(" + ModelUtils.ID_LENGTH + ") COLLATE utf8_bin")
columnDefinition屬性數據庫供應商相關的,所以試圖在HSQLDB下降模式時使用Hibernate它失敗:
[ERROR] 16 jun 12:58:42.480 PM main [org.hibernate.tool.hbm2ddl.SchemaExport]
Unexpected token: COLLATE in statement [create table cms.edi_editorial_obj (edi_uuid varchar(23) COLLATE]
爲了解決這個問題,我想這個解決方案(但不想花時間,如果它是不可能的),在運行時,對於每個註釋方法柱:
- 獲取@Column註釋
- 創建列註釋的副本,使用javaassist設置columnDefinition null。
- 組列方法註釋copy列註釋對象覆蓋舊的(我不知道這是可能的)
是否有可能爲「黑客」這些方法的這種方式?
任何幫助,將不勝感激......
我用這個回答了一個類似的問題:http://stackoverflow.com/questions/906671/jpa-how-do-i-specify-the-table-name-corresponding-to-a-class-at-runtime/940380#940380 – 2010-06-17 13:57:53