2016-12-30 151 views
0

我試圖連接一個lagacy數據庫,並且遇到一些麻煩。我正在使用Grails 3.2.3和Postgresql 9.4。當嘗試更改列名時,GORM創建列兩次,一次使用我選擇的名稱,另一次使用GORM列名格式。 該列是estado in Cidade實體,我需要將它映射到「EstadoId」自定義外鍵列名

這既創造: 「EstadoId」 整數NOT NULL estadoid整數NOT NULL,

 
class Cidade { 
    int id 
    String nome 
    Boolean capital 

    static mapping = { 
    table '`tbCidades`' 
    id column: '`CidadeId`' 
    nome column: '`Nome`' 
    capital column: '`Capital`' 
    estado column: '`EstadoId`' 
    version false 
    } 

    static belongsTo = [ estado : Estado] 
} 

 
class Estado { 
    int id 
    String sigla 

    static hasMany = [ cidades: Cidade ] 

    static mapping = { 
    table '`tbEstados`' 
    id column: '`EstadoId`' 
    sigla column: '`Sigla`' 
    version false 
    } 
} 

我跟我注意到使用下劃線格式(就像選擇一個名字:my_column_estado它的工作原理。 )

回答

0

它是grails默認的bahaviour;當您使用

static belongsTo = [ estado : Estado]

它創造estado_id列是映射estado實例。你有沒有嘗試刪除約束:

estado column: ' EstadoId '

跌落試驗數據庫,並重新編譯工程?

+1

其實我需要列名稱爲「EstadoId」。但是由於a不需要任何級聯,只需聲明如下的屬性:Estado estado並映射列名稱:estado列:「EstadoId」。 – user2241710