我的grails中的setter有问题。我在beforeTax和afterTax之前有两个属性。我只想在db beforeTax中存储一个属性。在ui中,我希望用户在税前或税后输入。所以我把afterTax变成了这样的瞬态属性:
double getAfterTax(){
return beforeTax * tax
}
void setAfterTax(double value){
beforeTax = value / tax
}
当我现在输入税后价值并希望保存对象时,验证失败(税前不能为空值)
我做错了什么?
答案 0 :(得分:1)
如果我理解你的问题,你想根据afterTax的值计算beforeTax吗?
您可以在XXX()之前使用事件处理程序方法,其中XXX是Validate,Insert和Update来计算beforeTax。然后beforeTax的约束可以为空:false。
def beforeValidate() {
computeBeforeTax()
}
答案 1 :(得分:0)
您必须将一个属性标记为瞬态,以防止GORM尝试将此变量保存到DB中。尝试将此行添加到您的域类中,该类包含afterTax
。
static transients = ['afterTax']