我正在嘗試使用Grails啓動並運行項目。 我有2個表,areaserver和serverprotocol。 areaserver與serverprotocol具有一對多的關係(對許多服務器協議來說一個服務器)。 實體類AreaServer具有分配的字符串主鍵。 我已經手動配置AreaServer的ID密鑰爲一個分配的字符串, ,我已經將ServerProtocol類配置爲AreaServer的多對一關係中的許多,但是當我嘗試在AreaServer的手動設置外鍵「映射」部分,Grails使用傳統的方法,即它假定AreaServer的外鍵是自動遞增的ID與值「ID」如何更改用於在Grails中映射關聯的外鍵名稱
我的繼承人AreaServer實體類:
class AreaServer {
String serverId
...
...
static hasMany = [ serverProtocol : ServerProtocol ]
static mapping = {
serverProtocol lazy:false
id name: 'serverId', generator: 'assigned'
serverProtocol column: 'server_serverId'
}
}
這裏是我的ServerProtocol實體類:
class ServerProtocol {
long dbId
....
....
static belongsTo = [ areaServer : AreaServer ]
static mapping = {
id name: 'dbId'
version false
}
}
當Grails的創建數據庫和表格「serverprotocol」表中有一個名爲「areaServer_id」而不是「server_serverId」,我將其配置在AreaServer的映射部分做一個外鍵。 像我試圖做的那樣配置外鍵應該是一個標準過程,如在Grails.org文檔http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html 的「表和名稱列」中所示出於某種原因更改外鍵名稱(當外鍵嵌套時在一對多關係的「許多」表中)只是不起作用,文檔說它應該。
我知道Grails標準約定是希望每個表都有一個名爲「id」的自動遞增主鍵,這就是爲什麼外鍵被命名爲「areaServer_id」(因爲AreaServer在ServerProtocol中被引用爲areaServer )。 有誰知道爲什麼Grails不允許我手動修改外鍵的名字,就像在Grails的文檔中說的那樣?
感謝您提前給予任何幫助!