Я пытаюсь запустить проект с использованием Grails.У меня есть 2 таблицы, areaserver и serverprotocol.areaserver имеет отношение один-ко-многим с протоколом сервера (один сервер-ко многим протоколам сервера).Класс сущности AreaServer имеет назначенный строковый первичный ключ.Я вручную настроил ключ идентификатора AreaServer, чтобы он был назначенной строкой, и я настроил класс ServerProtocol как множество в соотношении «многие к одному» в AreaServer, но когда я пытаюсь установить внешний ключ вручную в отображении «AreaServer» вручную"В Grails используется традиционный подход, в котором предполагается, что внешний ключ AreaServer представляет собой автоматически увеличивающийся идентификатор со значением" id "
Вот мой класс сущностей 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 упоминается как areaServer в ServerProtocol).Кто-нибудь знает, почему Grails не позволяет мне изменять имя внешнего ключа вручную, как это возможно в документации Grails?
Заранее благодарен за любую помощь!