首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一对多关联在groovy中出现堆栈溢出错误,并使用grails.Please检查类下方,记录是否存在任何关联错误

一对多关联在groovy中出现堆栈溢出错误,并使用grails.Please检查类下方,记录是否存在任何关联错误
EN

Stack Overflow用户
提问于 2021-03-29 03:02:01
回答 1查看 41关注 0票数 0

在使用grails的groovy中,一对多的关联会导致堆栈覆盖流错误。请检查下面的类,错误日志,看看是否有任何关联。错误。

这就是我到目前为止所尝试的:

之前的关联是从B到C类,现在我们在进行此关联更改后将其修改为A到B类。更改对我来说很好,但是当从A类访问b的时候,它抛出了来自A.groovy的堆栈溢出错误getBs方法。如果我删除getBs方法,它会给出null作为B,即使b在db中可用于合约。此外,调用B.findAllByContract动态查找器方法时,它的抛出无法解析属性'a‘,即使它在类级别可用。你能带我到这里吗?

代码语言:javascript
复制
class A implements Serializable {
    static stampable = true
    static auditable = true
    static hasMany = [
        bs: B]
    static mapping = {
        bs joinTable: [column: "a_id"]
    }
    static mappedBy = [ bs: "a"]
    def getBs() {
        println "calling ..."
        return bs
    }
}
class B implements Serializable { 
    A a
    static constraints = {
        a nullable:true
    }
    static mapping = {
        sort title: "asc"
        a column: "a_id"
    }
    static transients = ['BValue']
}

错误日志:

代码语言:javascript
复制
2021-03-28 13:06:10,825 {yyyy-MM-dd HH:mm:ss} admin ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/app].[grailsDispatcherServlet] - Servlet.service() for servlet [grailsDispatcherServlet] in context with path [/app] threw exception [Handler processing failed; nested exception is java.lang.StackOverflowError] with root cause
java.lang.StackOverflowError: null
        at org.codehaus.groovy.runtime.InvokerHelper.format(InvokerHelper.java:583)
        at org.codehaus.groovy.runtime.InvokerHelper.format(InvokerHelper.java:575)
        at org.codehaus.groovy.runtime.InvokerHelper.toString(InvokerHelper.java:130)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.println(DefaultGroovyMethods.java:642)
        at org.codehaus.groovy.runtime.dgm$504.invoke(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:251)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
        at app.A.getBs(A.groovy:245)
        at sun.reflect.GeneratedMethodAccessor878.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
        at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1852)
        at groovy.lang.ExpandoMetaClass.getProperty(ExpandoMetaClass.java:1155)
        at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3735)
        at groovy.lang.ExpandoMetaClass.getProperty(ExpandoMetaClass.java:1167)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassGetPropertySite.getProperty(PogoMetaClassGetPropertySite.java:51)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
        at app.A.getBs(A.groovy:246)
        at sun.reflect.GeneratedMethodAccessor878.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
        at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1852)
        at groovy.lang.ExpandoMetaClass.getProperty(ExpandoMetaClass.java:1155)
        at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3735)
        at groovy.lang.ExpandoMetaClass.getProperty(ExpandoMetaClass.java:1167)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassGetPropertySite.getProperty(PogoMetaClassGetPropertySite.java:51)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
        at app.A.getBs(A.groovy:246)
        at sun.reflect.GeneratedMethodAccessor878.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
EN

回答 1

Stack Overflow用户

发布于 2021-03-29 22:53:08

尝试更新getBs方法,如下所示:

代码语言:javascript
复制
def getBs() {
    println "calling ..."
    return this.bs
}

我认为引用bs可能是递归地调用getBs()

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

https://stackoverflow.com/questions/66845145

复制
相关文章

相似问题

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