我遇到了一些我沒想到的行爲。我有一個對象具有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寫入數據庫,並且有辦法繞過它。