2014-12-05 67 views
1

我通過hbm2java逆向工程生成pojos。而對於註解名稱變成ejb3 =「true」。休眠逆向工程-annotations大寫的名字

但我的問題是@Table(name =「EMPLOYEE」)我想@Table(name =「Employee」)。反向工程代碼不是由我寫的。我們正在xpand生成pojos和Ejb3 *****。ftl s用於註釋。

@Entity @Table(name = 「EMPLOYEE」)

公共類Employee {

在此先感謝,如果他們投入反引號

回答

0

案件敏感的表名稱只作檢測。 您可以使用hibernate.reveng.xml文件來控制Hibernate文檔的hbm2java(請參閱Controlling reverse engineering)的逆向工程過程。

默認實現不支持區分大小寫的名稱,因此您必須提供您自己的org.hibernate.cfg.reveng.dialect.MetaDataDialect,您必須在其中實施Iterator getTables(String catalog, String schema, String table);才能返回區分大小寫的表名稱,即反引號中的表名稱。

如果您這樣做,您可能還必須提供自定義org.hibernate.cfg.reveng.ReverseEngineeringStrategy以從「區分大小寫」表名中生成正確的類名稱和標識符。

+0

是的,你是正確的,因爲一些保留的名稱問題,我們正在使用back ticks作爲名稱。但是我不能引入reveng.xml,因爲它在遺留代碼中會有點激進。你的意思是說,默認的註釋將始終是大寫?要添加回刻度我編輯ftl文件{pojo.generateJoinColumnsAnnotation(property,cfg).replaceFirst(「= \」「,」= \「'」).replaceAll(「\」,「,」}這樣的東西 – adroit 2014-12-05 06:24:29

+0

不知道hibernate工具是否總是默認創建大寫表名,這是我迄今爲止看到的。有一個未記錄的屬性'hibernate.globally_quoted_identifier'參見https://hibernate.atlassian.net/browse/HHH- 5673.我個人不會信賴這個,我可以想到的一個辦法是在ftl文件中定義大寫表名和區分大小寫的表名之間的映射,但我從來沒有試過了。 – andih 2014-12-05 08:27:08