在这种情况下,我需要您的帮助。
我有以下域类:

class Payment {
    BigDecimal cash
    BigDecimal checkValue

    static constraints = {
        cash nullable: true
        checkValue nullable: true
    }
}
cashcheckValue属性可以为空,但是其中至少一个必须具有值。

我希望我能够解释我的问题。

谢谢你的时间!

最佳答案

在这种情况下,自定义验证器似乎是一个不错的选择。尝试:

class Payment {
    BigDecimal cash
    BigDecimal checkValue

    static constraints = {
        cash nullable: true, validator: { val, obj ->
            val != null || obj.checkValue != null
        }
        checkValue nullable: true, validator: { val, obj ->
            val != null || obj.cash != null
        }
    }
}

使用groovy truth,您可以将验证器的闭包简化为如下所示:
static constraints = {
        cash nullable: true, validator: { val, obj -> val || obj.checkValue }
        checkValue nullable: true, validator: { val, obj -> val || obj.cash }
}

有关更多信息,请参阅grails文档的Validation部分。

08-27 14:31