我目前正在实现一个 grails web-app,它有几个复杂的表单,只要实体或顶级域对象不是,关联图上的修改应该在“内存中”(即 http 会话)进行管理保存。
例如
从上到下:文档 -> 类别 -> 子类别 ...
要求:对文档/类别/子类别的修改仅应在保存文档时保存,不得在其他情况下保存。
我的第一种方法是将关联 ID 存储在 http 会话中,但这最终会在我的 DocumentController.update 操作中产生很多线索代码,这些代码将会话状态与当前持久状态同步
// update some abstract association
for (def Iterator it = documentInstance.association.iterator(); it.hasNext();) {
if (!session.association.contains(it.next().someEntity.id)) {
it.remove()
}
}
for (def roleTypeId in session.association) {
// add/update association
...
}
当涉及到实际修改数据(例如类别)时,线索代码变得更加糟糕,这意味着在保存顶级实体时必须分离/重新附加/合并修改后的类别对象。
我会对你对如此长跨度的作品单元的想法非常感兴趣。