Grails:更新关系中的数据

时间:2013-07-14 18:37:42

标签: grails

我使用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模块。如果它是新的,请添加它,如果已更改则更新它,或者如果已从计算机中删除它,则删除它。 “或者:“将您的信息更新为此套装。”

有什么想法吗?

提前致谢,

克里斯

0 个答案:

没有答案