我使用Grails 2.2.3开始了一个小项目,我现在想知道用关系更新模型的正确/最有效的方法是什么。
class Computer extends Inventory {
String hostName
...
static hasMany = [memories: Memory]
}
class Memory extends Inventory {
Integer capacity
String bank
...
static belongsTo = [computer: Computer]
}
数据输入定期从外部源安排,没有用户与视图交互。
当只是执行mem.each { computer.addToMemories(it) }
时,每个计划的运行都会有重复的内存条目。我可以解决这个问题,检查是否存在相应的条目:
mem.each {
if (!Memory.findWhere(it)) computer.addToMemories(it)
}
如果将新的mem模块添加到计算机,这将有效。但是想象一下,模块是从计算机中删除的。您可以通过已保存和给定的模块创建嵌套循环并进行比较。但这是一些编码而不是很好。或者您可以先执行removeAll()
然后将所有模块添加为新模块。但那也不是很好。 id
会快速增长。
你知道更聪明的方法来处理这种情况吗?是不是有可能说“嘿模型,这是这台计算机的最新一组mem模块。如果它是新的,请添加它,如果已更改则更新它,或者如果已从计算机中删除它,则删除它。 “或者:“将您的信息更新为此套装。”
有什么想法吗?
提前致谢,
克里斯