我开始学习 Grails,所以这可能是一个菜鸟问题。我的疑问很简单,尽管我已经搜索过但找不到我正在寻找的答案。
这是问题所在:
我有一个域类与我拥有的另一个域类有关系,如下所示:
class Class3 {
static belongsTo = [class1:Class1]
(...)
}
我正在我的控制器中创建一个动作,它从我的 Class3 接收一个 JSON 对象。在这个 JSON 中,我有一个我的 class1 对象的 ID。
问题是:我如何正确创建 Class3 的实例,初始化它的 class1 属性,只有 class1 的 Id 而不是它的实际实例?
我现在可以Class1.get(parsed_id)
像这样寻找(这就是我现在正在做的事情,并且正在工作):
def jsonObj = request.JSON
def class3 = new Class3(class1: Class1.get(jsonObj.class1.id) (...))
class3.save(flush: true)
这就是我的 json 的样子:
{class1:{id:1} (...)}
但我认为在 DB 中查找 class1 的这个实例来初始化我的 class3 关系并将其保存在我的 DB 中有点开销。有一个更好的方法吗?就像,将class1的外键直接保存在我的class3中的DB中,没有额外的SELECT
?
或者它可能有一种从 JSON 对象初始化对象的方法?