2

我已经使用 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)
}

如果将新的内存模块添加到计算机,这将起作用。但是想象一下,模块是从计算机中删除的。您可以通过已保存和给定的模块创建嵌套循环并比较它们。但这是一些编码,不是很好。或者你可以先做 aremoveAll()然后让所有模块添加为新模块。但这也不是很好。并且id会增长得非常快。

你知道处理这种情况的更聪明的方法吗?是不是有可能说“嘿模型,这是这台计算机的最新内存模块集。如果它是新的,则添加它,如果已更改则更新它,或者如果它已从计算机中删除,则将其删除。 " 或:“将您的信息更新到此集合。”

有任何想法吗?

提前致谢,

克里斯

4

0 回答 0