在grails/java中无法一致地获取对象id

在grails/java中无法一致地获取对象id,java,hibernate,grails,Java,Hibernate,Grails,每当生成新发票时,我都会尝试向客户发送电子邮件。但要做到这一点,我需要获得发票和客户的id。我的问题是,我用来获取发票或客户ID的代码给了我不一致的响应,我的意思是它有时有效,有时无效 以下是相关代码: protected Map getObjectsMap(Map domainMap){ Map objectsMap = [:] domainMap.each{key,value-> def dc = grailsApplication.domainClas

每当生成新发票时,我都会尝试向客户发送电子邮件。但要做到这一点,我需要获得发票和客户的id。我的问题是,我用来获取发票或客户ID的代码给了我不一致的响应,我的意思是它有时有效,有时无效

以下是相关代码:

protected Map getObjectsMap(Map domainMap){
    Map objectsMap = [:]
    domainMap.each{key,value->
        def dc = grailsApplication.domainClasses.find{it.getFullName().equals(key)}
        def obj = dc.clazz.get(value)
        if(!obj)
            log.error "Could not find object of type $key with id=$value"
        String objectName = key.substring(key.lastIndexOf(".")+1)
        objectName = objectName.charAt(0).toLowerCase().toString() + objectName.substring(1)
        objectsMap.put(objectName, obj)
    }
    return objectsMap
}

在作为参数传递的domainMap中,我作为Map传递类的完整名称和对象的id。使用上面的代码,我希望获得该类的对象,并使用该ID,这样我就可以使用它的其他属性,并且我将返回一个对象映射,并将它们的类名作为键。有什么原因可以解释为什么它的行为不一致。

我很困惑,你是在脚本中还是在应用程序中这样做的?为什么不呢

def invoices = MyInvoiceDomainClass.findAll()
invoices.each{invoice->
   invoice.whatever...
}

我很困惑,您是在脚本中还是在应用程序中执行此操作?为什么不呢

def invoices = MyInvoiceDomainClass.findAll()
invoices.each{invoice->
   invoice.whatever...
}