0
에 저장되지 않은 내가 저장해야 개체의 목록을 가지고, 나는이 기능GORM 저장()가 DB
private saveAll(List<Element> elements){
for(Element element: elements){
element.save(flush:true, insert:true)
}
}
에게이 I 요소 클래스 (그루비 클래스)는 다음과 같다 :
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 찾을 : 모든에
@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;
}
}
나는 다음과 같은 로그를 얻을 저장 삽입이 전혀 반영되지 않습니다. 오류가 발생하지 않거나 데이터가 데이터베이스에 저장되지 않은 이유를 이해할 수 없습니다.
코드에 문제가 있는지 확인하십시오 (Groovy/grails newbie) 또는 가이드 왜 이런 행동이 일어날까요?
여러 가지 이유가있을 수 있습니다. 하나는 나중에 트랜잭션을 롤백하는 것입니다. 유효성 검사가 실패했을 수 있습니다 ('.save (...) '를 호출 할 때'failOnError : true'를 포함 시켜서 그 규칙을 정할 수 있습니다.) –
@JeffScottBrown failOnError를 true로 설정하고 save 메소드에 속성으로 추가했습니다. –
'failOnError'는 아무것도 기록되지 않을 것이지만 검증이 실패하지 않았다는 것을 나타내는 예외가 발생하지 않은 경우 예제 프로젝트를 보지 않으면 질문에 대답하기 어려울 수 있습니다. 이전에는 데이터가 저장되지 않을 수있는 여러 가지 이유가 있었고 단지'element.save (flush : true, insert : true)'만으로는 문제를 진단하기에 충분하지 않았습니다. 도움이되지 않아서 미안합니다. –