Я пытался найти ответ в течение нескольких часов, но до сих пор не смог найти адекватного решения, поэтому я надеюсь, что кто-то здесь может иметь еще некоторый опыт работы с Grails и реализации в нем пользовательских отношений.
Моя проблема в том, что у меня есть два класса:
Компания
OrderConfig
OrderConfig содержит две ссылки на компанию. 1 для грузополучателя, 1 для грузоотправителя. Я реализовал эту взаимосвязь (см. Ниже), и все выглядит прекрасно, с моей таблицей order_config, содержащей столбец consignee_company_id и столбец shipper_company_id.
Однако я не хочу или не нуждаюсь в столбце company_id вообще. Я бы предпочел использовать CompanyName в качестве идентифицирующего столбца. Как я могу запретить Grails автоматически добавлять столбец id в таблицу компании и вместо этого использовать столбец companyName в качестве первичного ключа, гарантируя, что будет сгенерирована моя таблица order_config, содержащая companyName, а не company_id?
Я пытался встроить компанию в класс orderconfig и боролся со всеми другими вариантами, включая сопоставления, однако у меня возникли проблемы с каждым из них.
Заранее спасибо!
Пока мой код:
class OrderConfig {
static hasMany = [consignee:Company, shipper:Company]
String toString() {
return "${consignee}"
}
static constraints = {
consignee (blank:false, maxSize:10)
shipper (blank:false, maxSize:10)
}
Company consignee
Company shipper
}
class Company {
String toString() {
return "${companyName}"
}
static constraints = {
companyName(blank:false, maxSize:10)
companyAddress1(blank:false, maxSize:40)
companyAddress2(blank:false, maxSize:40)
companyAddress3(blank:false, maxSize:40)
companyAddress4(blank:false, maxSize:40)
companyZipCode(blank:false, maxSize:36)
companyCountry(blank:false, maxSize:36)
}
String companyName
String companyAddress1
String companyAddress2
String companyAddress3
String companyAddress4
String companyZipCode
String companyCountry
}