gpt4 book ai didi

java - 对具有关系的对象实现save() Action ?

转载 作者:行者123 更新时间:2023-12-02 16:00:50 24 4
gpt4 key购买 nike

我有以下Grails GORM域类:

class Category {
hasMany = [items: Item]
}

class Item {
belongsTo = [category: Category]
}

在我的ItemController中,我有一个项目的create()和save() Action 。

save()操作如下所示:
  @Transactional
def save(Item item) {

...

if (item.hasErrors()) {
...
}

category.addToItems(item)
if (!category.save(flush: true)) { ... }

}

问题是 item.hasErrors()将报告错误,因为ʻitem.category``为空。它尚未链接到类别。

如果我像这样切换块:
   category.addToItems(item)
if (!category.save(flush: true)) { ... }

if (item.hasErrors()) {
...
}

那么我在保存之前无法检查项目错误。

处理此问题的最佳方法是什么?

最佳答案

你有没有尝试过

category.addToItems(item)
if (item.hasErrors()) {
...
}
if (!category.save(flush: true)) { ... }



编辑:

在我的grails项目中,我手动处理集合。这意味着在此示例中,我将添加到“类别”:
static mapping = {
items cascade: 'none'
}

然后在保存对象时,我首先保存类别,然后保存所属项目。喜欢:
category.addToItems(items)
if (!category.save(flush:true)) { ... } // will not save items
if (!item.save(flush:true)) { ... }

如果您不想在商品发生错误的情况下保存类别,请确保您正在进行交易并使用
item.save(failOnError:true)

关于java - 对具有关系的对象实现save() Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31207723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com