gpt4 book ai didi

hibernate - Grails上的GORM save()未保存在数据库中

转载 作者:行者123 更新时间:2023-12-02 15:46:17 25 4
gpt4 key购买 nike

我有一个需要保存的对象列表,我有这个功能

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

但是,当我检查数据库中的表时,发现表为空,则不会反射(reflect)出任何插入。我不明白为什么不会出现错误,或者为什么数据没有保存在数据库中

能否请您检查代码中是否有任何问题(我是个时髦/新手),或者指导我为什么会发生这种情况?

最佳答案

尝试一下,看看是否出现任何错误:

private saveAll(List<Element> elements){
for(Element element: elements){
element.validate()
if (element.hasErrors()) {
element.errors.allErrors.each {
println it
}
} else {
element.save(flush: true)
}
}
}

另外,如果从服务中调用saveAll,则通过添加静态属性( static transactional=false)除去事务性声明,然后查看是否会有所不同。

关于hibernate - Grails上的GORM save()未保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com