在我目前的項目中,我無法堅持一對多的關係。 雙方的關係將被保存 - 只是他們之間的鏈接丟失。不能堅持一對多的關係
我的兩個域之間的一個一對多的關係是這樣的:
class Parent {
String name
...
static hasMany = [childs: Child]
Parent() {}
Parent(SomeOtherClass obj) {
this.properties = obj.properties
}
}
class Child {
int code
String description
}
我創建一個ParentService
內我Parent
實例:
public Boolean createParents(List parentIds) {
boolean savedSuccessfully = true
Parent.withTransaction {status ->
parentIds.each { parentIdString ->
if (parentIdString && parentIdString.isInteger()) {
int parentId = parentIdString.toInteger()
def parentInstance = new Parent(someOtherService.getExternalParentObj(parentId))
someOtherService.getExternalChilds(parentId).each { entry ->
parentInstance.addToChilds(Child.findOrSaveWhere(code: entry.key, description: entry.value))
}
if(!parentInstance.save()) {
status.setRollbackOnly()
savedSuccessfully = false
}
}
}
}
return savedSuccessfully
}
兩者的Parent
實例和Child
實例已成功創建並保存。父母和孩子之間的聯繫缺失。每個Parent
實例的childs
屬性是一個空列表。
我dont't知道什麼是錯在這裏。 爲什麼關係不會持續?有任何想法嗎?
更新
我已經添加了ParentService
集成測試創建所有Parent
實例後,測試childs
名單的存在:
...
assert parentService.createParents(["123","234","356"]) == true
def parent = Parent.get(1)
assert parent.childs.size() > 0
...
不料 - 測試通過。
你能否證實的Grails能夠正確地創建 – uchamp 2013-02-26 17:13:00
是父母,孩子和parent_child表 - 正確創建的所有表。 _parent_表和_child_表將被填充。只是連接表_parent_child_爲空... – aiolos 2013-02-26 20:20:37
ParentService和someOtherService的事務屬性是什麼?您是否曾嘗試在調用其他服務(並添加子項)之前保存/刷新父實例? – codelark 2013-03-05 23:03:01