Grails 3没有返回正确的类

时间:2017-08-23 19:46:05

标签: hibernate grails gorm grails3

我有最初在Grails 2下开发的Grails / Groovy代码,我们最近重构为Grails 3.在Intellij IDEA(以及我们的Tomcat服务器)上运行,作为DocumentSource的源对象不会被识别为一个。它被识别为基础Source类。这段代码在Grails 2中返回了预期的结果,但让我在Grails 3中难倒。

检查调试器中的源对象,顶级字段对于类型和配置文件为null,而metaClass是Source。在target->处理程序下向下钻取,找到type,profile,documentId,documentName和metaClass的预期值。

我不确定这是否与GORM / Hibernate有关。我们已经尝试使用不同的版本,我不确定那里的影响。有什么想法吗?

// Base Domain Class
class Source {
    String type
    Profile profile
}

// Extended Domain Class
class DocumentSource extends Source {
    String documentId
    String documentName
}

// Further Extended Domain Class
class DocumentLocatorSource extends DocumentSource {
    String locatorId
}

// Snippet from Service Class
...
sourceReferences.each { sourceReference ->
    def source = sourceReference.source
    MarshalledResponse response = new MarshalledResponse()
    response.sourceId = source.id
    if(source instanceof Source) {
        // Get's here!
        cdsSource.sourceId = source.id
    }
    if(source instanceof DocumentSource) {
        // Never get's here. :-(
        response.documentid = ((DocumentSource)source).documentId
        response.documentname = ((DocumentSource)source).documentName
    }
    if(source instanceof DocumentLocatorSource) {
        response.locatorid = ((DocumentLocatorSource)source).locatorId
    }
}
...

0 个答案:

没有答案