0
節省我有我需要保存對象的列表,我有這個功能GORM保存()在Grails是不是在DB
private saveAll(List<Element> elements){
for(Element element: elements){
element.save(flush:true, insert:true)
}
}
我的元素類(Groovy類)是類似以下:
@ToString(excludes = 'metaClass,content', includePackage = false, includeNames = false)
class Element {
Integer id
MessageSourceType sourceType
String key
String valueEN
String valueDE
String valueES
String valueFR
String valueIT
String valuePT
String valueAR
String valueCMN
String valueHI
String valuePL
static constraints = {
sourceType nullable: false, blank: false, maxSize: 256
key nullable: false, blank: false, maxSize: 254, unique:true
valueEN nullable: true, maxSize: 64000
valueDE nullable: true, maxSize: 64000
valueES nullable: true, maxSize: 64000
valueFR nullable: true, maxSize: 64000
valueIT nullable: true, maxSize: 64000
valuePT nullable: true, maxSize: 64000
valueAR nullable: true, maxSize: 64000
valueCMN nullable: true, maxSize: 64000
valueHI nullable: true, maxSize: 64000
valuePL nullable: true, maxSize: 64000
}
static mapping = {
table "element"
id column: "eId"
version column: "eVersion"
sourceType column: "eSourceType"
valueEN column: "eValueEN"
valueDE column: "eValueDE"
valueES column: "eValueES"
valueFR column: "eValueFR"
valueIT column: "eValueIT"
valuePT column: "eValuePT"
valueAR column: "eValueAR"
valueCMN column: "eValueCMN"
valueHI column: "eValueHI"
valuePL column: "eValuePL"
}
@Override
public boolean equals(Object element){
if(element != null && element instanceof Element){
if(this.getKey().equalsIgnoreCase(((Element)element).getKey())){
return true;
}
}
return false;
}
}
每次保存時,我得到以下日誌:
2017-11-25 16:38:56,787 | TRACE | | localhost-startStop-1 | org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor | executing insertions
2017-11-25 16:38:56,787 | DEBUG | | localhost-startStop-1 | org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor | executing identity-insert immediately
但後來當我在DB檢查表我覺得EMP ty,沒有反映插入。我不明白爲什麼不會出現錯誤,或者爲什麼數據沒有保存在數據庫中
您可以檢查我的代碼是否存在任何問題(我是groovy/grails新手)或指南我爲什麼會發生這樣的行爲?
這可能會發生任何原因。其中之一就是稍後有事情要回來。驗證可能失敗(你可以通過在調用'.save(...)'時加入'failOnError:true'來排除這個錯誤。 –
@JeffScottBrown我已經將failOnError設置爲true並將其添加爲save方法的屬性,但是沒有錯誤記錄! –
'failOnError'不一定會導致任何事情被記錄,但如果沒有異常被拋出,表明驗證沒有失敗。沒有看到一個示例項目,可能很難回答你的問題。之前,有很多原因可能導致數據不能保存,只是'element.save(flush:true,insert:true)'不足以診斷問題,抱歉我無法幫助。祝您好運! –