0
在Grails中無法從頭開始創建對象(在代碼中而不是從表單中)。以下是控制器(評估)中方法的代碼片段。Grails在保存時出錯:無法在只讀事務中執行nextval()
def newVol = new Vol(
volType:type,
app: assessmentInstance.app,
assessment:assessmentInstance,
dateFound: assessmentInstance.assDate,
urlParam: url,
volName: "TEST",
volNote: "TEST"
)
newVol.save(validate:false,flush:true, failOnError:true)
結果是這樣的錯誤:
Class
org.postgresql.util.PSQLException
Message
ERROR: cannot execute nextval() in a read-only transaction
的ID被映射到卷類發電機:
static mapping = {
id column:'vol_id'
id generator: 'sequence',params:[sequence:'scan_sequence']
}
我真的不知道如何保存可以被認爲作爲只讀事務處理。我嘗試在我的域類上使用@transactional設置,首先將readOnly設置爲false,然後刪除@transactional,但它沒有改變任何事情。看起來我應該尋找使用數據庫序列的替代方案。你怎麼看?
UPDATE 從上面的代碼所在的控制器中刪除了readonly = true,並且該代碼在其中工作。但是......除去這些的副作用是什麼?
謝謝。答案是在腳手架過程中默認添加了readOnly = true。 – mcgyver5