首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Grails上的GORM save()没有保存在数据库中

Grails上的GORM save()没有保存在数据库中
EN

Stack Overflow用户
提问于 2017-11-25 22:43:34
回答 1查看 1K关注 0票数 0

我有一个需要保存的对象列表,我有这个函数

代码语言:javascript
运行
复制
private saveAll(List<Element> elements){
    for(Element element: elements){
        element.save(flush:true, insert:true)
    }
}

I element类(groovy类)如下所示:

代码语言:javascript
运行
复制
@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;
    }

}

每次保存时,我都会得到以下日志:

代码语言:javascript
运行
复制
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

但是,当我检查数据库中的表时,我发现它是空的,没有插入被反映出来。我不明白为什么不会引发错误,或者为什么数据不保存在数据库中

您能检查一下我的代码中是否有任何问题(我是groovy/grails新手),或者指导我为什么会发生这样的行为?

EN

回答 1

Stack Overflow用户

发布于 2017-11-28 02:31:53

尝试执行此操作,看看是否出现任何类型的错误:

代码语言:javascript
运行
复制
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 )来删除事务性声明,并查看这是否会有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47487187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档