Я застрял на этом уже целый день! Я только начинаю работать с Grails / Groovy.
У меня есть два класса домена с простым внешним ключом «многие к одному». Упрощенно немного, это «Компания»
class Company {
String name
String city
String state
String ticker
static constraints = {
name(unique:true, maxSize:40)
state(blank:true, maxSize:2)
city(blank:true, maxSize:40)
ticker(blank:true, maxSize:8)
}
}
и Подписавшая сторона (которая может принадлежать Компании)
class Signer {
String firstName
String lastName
String city
String state
String zip
String email
Company company
static constraints = {
firstName(maxSize:40, blank:false)
lastName(maxSize:40, blank:false)
city(maxSize:40, blank:false)
state(maxSize:2, blank:false)
zip(maxSize:5, blank:false)
email(maxSize:50, unique:true, email:true, blank:false)
company(nullable:true)
}
}
Вот проблема:
Я не могу понять, как вставить новую запись в «Подписавшую» и получить в поле компании значение company_id.
mysql> select * from signer;
+----+---------+-----------+------------+----------------------+------------+-----------+-------+-------+
| id | version | city | company_id | email | first_name | last_name | state | zip |
+----+---------+-----------+------------+----------------------+------------+-----------+-------+-------+
| 1 | 0 | Sunnyvale | NULL | swirsky@gmailAAA.com | Robert | Swirsky | CA | 94087 |
| 2 | 0 | Sunnyvale | NULL | swirsky@gmailBBB.com | Robert | Swirsky | CA | 11111 |
| 3 | 0 | Sunnyvale | NULL | swirsky@adobeCCC.com | Robert | Swirsky | CA | 11111 |
Я пробовал следующее:
def s = new Signer(params)
s.save()
где params содержит:
company_id установлен на номер существующей записи компании
компания , установленная на # существующей записи компании, экземпляр
Объект домена компании, установленный
c = Company.get (id) // где id - номер действительной компании
params.company = c
Я тоже пробовал это с
params.company_id = c
Ничего из этого не работает! Когда я смотрю на таблицу в mysql, столбец company_id всегда равен нулю.
Как мне заставить это работать? Hibernate пытается быть "слишком умным" здесь! Я просто хочу вставить номер записи в company_id!