通过belongsTo保存引用

时间:2011-09-19 10:36:43

标签: grails groovy gorm

我正在使用一些已经创建的(而不是我)来自grails的域类来创建脚本。

class Person extends OAP {
  static hasMany = [addresses: Address]
(...)
}

class Address {
  static belongsTo = [oap: OAP]
(...)
}

类OAP没有对Address的引用。

所以我试图这样做:

p.save()
a.oap = p
println a.oap
a.save()

p为Person且是Address,但是虽然它在控制台上打印了正确的人,但引用不会保存在地址表中(oap_id保持为空)

P.S。:这可能不是grails中最好的关系设置,但这就是我必须要处理的事情

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我不知道GORM在这种情况下会如何表现,因为你基本上进入了这个奇怪的区域,你在Person上有一个单向hasMany,导致Person的一个SAVE-UPDATE级联行为地址NONE。然后,您还在Person和OAP之间进行单向一对一,这会导致OAP端出现ALL级联行为,并且地址侧出现NONE。所以我不确定在这里会发生什么。您需要将关系修复为:

  • 使其成为OAP,而不是人hasMany = [address:Address]
  • 将其设为belongsTo = [person:Person]

或者,就你在你们的关系中尝试做什么做一些额外的解释,我们可以从那里开始。

答案 2 :(得分:0)

请尝试这个,它解决了我的问题

p.addToAddresses(a);
p.save(flush:true)
相关问题