【发布时间】:2009-08-09 17:47:23
【问题描述】:
我已经坚持了一天了!我刚刚开始使用 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 设置为现有公司记录的#
company 设置为现有公司记录的 # 的实例
公司域对象由 c = Company.get(id) // 其中 id 是有效公司的编号 params.company = c
我也试过了
params.company_id = c
这些都不起作用!当我在mysql中查看表时,company_id 列始终为空。
如何让它工作? Hibernate 在这里试图“太聪明”!我只想将记录号塞入 company_id!
【问题讨论】: