cde*_*zaq 5 grails one-to-one grails-orm grails-domain-class
我有2个对象,ObjectA和ObjectB.
当ObjectA被创建,ObjectB则无法(不能,由于没有数据还)还不存在.
一旦ObjectB创建,如果存在适当的一个,它需要ObjectA附加一个对应的.如果没有合适的,那么新的简单地没有连接到一个.ObjectAObjectB
因此,所有ObjectA实例最终将附加到一个ObjectB,但并非所有ObjectB实例都将具有ObjectA.
基本上,我正在寻找GORM来构建这样的数据库表:
ObjectA
- Id (NotNull, unique)
- ObjectB_Id[FK: ObjectB.Id] (unique)
ObjectB
- Id (NotNull, unique)
Run Code Online (Sandbox Code Playgroud)
如何组合GORM域类来完成此操作?
我已经试过几乎所有的组合hasOne,belongsTo,原始属性,nullable: true并unique: true限制我能想到的,但我必须缺少一个.这似乎不是一个特别奇怪的场景,所以必须有一些方法来实现这一点.
通常情况下,将我的想法放在一起提出问题就会引出我的解决方案:
Class ObjectA {
ObjectB objectB
static constraints = {
objectB nullable: true, unique: true
}
}
Class ObjectB {
static belongsTo = [objectA: ObjectA]
static constraints = {
objectA nullable: true
}
}
Run Code Online (Sandbox Code Playgroud)
与此唯一的问题,我似乎无法避开的是,它可以设置ObjectB.objectA成ObjectA已与一个关联ObjectB.保存新关联时,GORM不会保存关联.不会抛出任何错误,并且ObjectB从数据库中提取新内容会使其objectA属性未设置.
添加unique: true到类中的objectA约束ObjectB也无济于事.而不是静默失败,将抛出错误,指示由于未设置的参数而导致唯一性检查失败.
| 归档时间: |
|
| 查看次数: |
2761 次 |
| 最近记录: |