gpt4 book ai didi

grails - 属于可空?

转载 作者:行者123 更新时间:2023-12-01 06:30:53 27 4
gpt4 key购买 nike

在阅读 grails 官方指南时,我对多对一关系的属于有疑问。

当我定义两个类时,Face 和 Nose 如下所示:

class Face {

String name
Nose nose

static constraints = {
}
}


class Nose {

String color

static belongsTo = [face: Face]

static constraints = {
}
}

我认为我们可以通过两种方式制作 Face 实例:
  • 与 Nose 同时做脸
    def rudolph = new Face(name: 'Rudolph', nose: new Nose('color': 'Red')).save(failOnError: true)
  • 依次做 Nose 和脸
    def nose = new Nose(color: 'Red').save(failOnError: true)
    def rudolph = new Face(name: 'Rudolph', nose: nose).save(failOnError: true)

  • 但是,两者都给我一个错误,如:
    Fatal error running tests: Validation Error(s) occurred during save():
    - Field error in object 'relationship.Nose' on field 'face': rejected value [null]; codes

    当然,如果我将约束放在 Nose 中,它会起作用:
    class Nose {

    String color

    static belongsTo = [face: Face]

    static constraints = {
    face nullable: true
    }
    }

    我不确定反向引用属性是否必须始终可以为空。

    另一个问题是以下静态属性有效,因为它没有“face”属性:
        static belongsTo = Face

    如果它没有反向引用属性名称,我们为什么要定义belongsTo 属性?

    最佳答案

  • 在您定义一对一关系的情况下,因此您不需要“belongsTo”。你可以从“Nose”类中删除它,它会没事的。此外,您不必保存“Nose”实例,只需创建它并将其添加到“Face”并保存“Face”实例。详情:http://grails.org/doc/latest/ref/Domain%20Classes/hasOne.html
  • 当您具有一对多或多对多关系时,需要定义“belongsTo”。它与保存和级联删除有关。问题“为什么”的链接:http://grails.org/doc/latest/ref/Domain%20Classes/belongsTo.html
  • 关于grails - 属于可空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21820038/

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