我遇到了一些我没想到的行为。我有一个对象具有status
。这个对象有两个状态,正在进行并关闭。当对象正在进行时,我想要计算状态并且不保存在数据库中...但是,一旦我关闭它/完成它,状态需要被保存。Grails getter写入数据库?
以下是我试图设置的东西,顺便说一句:
class Assessment{
AssessmentStatus status
List<Score> scores
static hasMany = [scores: Score]
AssessmentStatus getStatus() {
if(status){
return status
}
if (!scores || event.eventDateTime.after(new Date())) {
return AssessmentStatus.PRE_EVENT
}
scores.each{
if (it.incompleteReason){
return AssessmentStatus.INCOMPLETE
}
}
if (!getPassing()) {
return AssessmentStatus.FAIL
}
return AssessmentStatus.PASS
}
Boolean getPassing() {
def passing = Boolean.TRUE
this.scores.each {score ->
if (!score.passingScore){
passing = Boolean.FALSE
}
}
return passing
}
}
,你可以与我所期待的检查,看看我所期待的检查,如果状态为空的代码中看到。如果状态不为空,则返回它。如果它为空,那么做一些其他的计算。但是......出于某种原因,计算的状态会持续到数据库。现在我知道我可以经常去并添加:
if(finalized){
return status
}
VS的if(status)
,我会得到适当的回报。但是...我不想在数据库中产生垃圾数据。另一种方法来做到这一点将不会取代吸气剂...
我的问题基本上归结为。为什么重写getter写入数据库,并且有办法绕过它。