2010-09-14 30 views

回答

5

您可以更改命名策略,爲整個項目。從文檔https://grails.github.io/grails-doc/latest/guide/GORM.html#customNamingStrategy

默認情況下,Grails使用Hibernate的 ImprovedNamingStrategy通過 駱駝式大小寫字符串轉換爲 那些使用下劃線作爲字 分離到 領域類的類名和字段名轉換爲SQL 表和列名。您可以在 閉包中按照每個實例對 進行定製,但如果存在一致的 模式,則可以指定不同的NamingStrategy類使用。

配置要在hibernate部分的grails-app/conf/DataSource.groovy中使用的類名,例如,

所以,這樣的事情在你的DataSource.groovy中

dataSource { 
    pooled = true 
    dbCreate = "create-drop" 
    … 
} 
hibernate { 
    cache.use_second_level_cache = true 
    … 
    naming_strategy = org.hibernate.cfg.DefaultNamingStrategy 
} 
+0

你也可以實現org.hibernate.cfg.NamingStrategy並使用它,如果Hibernate的一個實現是不夠的,只需將它放在src/groovy或src/java並將其作爲'naming_strategy = com.myco.myapp.MyCoolNamingStrategy'參考它 – 2010-09-14 15:05:46

+1

在這個fea的當前狀態中的一個大警告在Grails中:這個命名策略覆蓋目前不適用於連接,外鍵或嵌入對象。下劃線在這些默認映射中被硬編碼。因此,如果您想更改命名策略,則需要爲域對象中的所有屬性指定列名覆蓋。 [docs](http://grails.org/doc/latest/guide/GORM.html#tableAndColumnNames) – 2012-08-10 15:44:19

+0

我提出這個錯誤,你可以在這裏https://jira.grails.org/browse/GRAILS -11988 – 2015-02-16 03:24:22

8

5.5.2.1 Table and Column Names

class Person { 
    String firstName 
    static mapping = { 
     table 'people' 
     firstName column:'firstname' 
    } 
} 
+0

這完美解決我的問題,它是一個單一的類名引起衝突與MySQL(我有一個名爲「條件」類而導致不正確的語法在hbm2ddl.SchemaUpdate – Mike 2012-05-03 20:49:53

+0

簡單的答案。謝謝! – 2013-12-16 20:53:21