簡體   English   中英

提取休眠查詢時出現java.lang.StackOverflowError

[英]java.lang.StackOverflowError while fetching hibernate query

在獲取列表大小為500的休眠查詢時出現錯誤,我得到的錯誤是
您能幫我為什么我會收到此錯誤嗎

 [org.springframework.remoting.support.RemoteInvocationTraceInterceptor] (RMI TCP Connection(2)-192.168.43.183) Processing of RmiServiceExporter remote call resulted in fatal exception: com.elcy.service.LCMessageRmiService.sendReportEmail: java.lang.StackOverflowError
    at java.lang.reflect.Constructor.newInstance(Unknown Source) [rt.jar:1.8.0_25]
    at java.lang.Class.newInstance(Unknown Source) [rt.jar:1.8.0_25]
    at org.hibernate.hql.internal.ast.SqlASTFactory.create(SqlASTFactory.java:260) [hibernate-core-4.3.2.Final.jar:4.3.2.Final]
    at antlr.ASTFactory.create(ASTFactory.java:153) [antlr-2.7.7.jar:]
    at antlr.ASTFactory.create(ASTFactory.java:186) [antlr-2.7.7.jar:]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2038) [hibernate-core-4.3.2.Final.jar:4.3.2.Final]
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046) [hibernate-core-4.3.2.Final.jar:4.3.2.Final]
ERROR [org.jboss.as.ejb3.invocation] (Thread-226 (ActiveMQ-client-global-threads-225168338)) WFLYEJB0034: EJB Invocation failed on component LCMessageMDB for method public void com.elcy.message.LCMessageMDB.onMessage(javax.jms.Message): javax.ejb.EJBTransactionRolledbackException: WFLYEJB0457: Unexpected Error
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:153) [wildfly-ejb3-10.0.0.Final.jar:10.0.0.Final]
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:256) [wildfly-ejb3-10.0.0.Final.jar:10.0.0.Final]
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:329) [wildfly-ejb3-10.0.0.Final.jar:10.0.0.Final]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.8.0_25]`

來自java.lang.Thread.run(未知來源)[rt.jar:1.8.0_25]

Caused by: java.lang.StackOverflowError
 at java.lang.reflect.Constructor.newInstance(Unknown Source) [rt.jar:1.8.0_25]
    at java.lang.Class.newInstance(Unknown Source) [rt.jar:1.8.0_25]
    at org.hibernate.hql.internal.ast.SqlASTFactory.create(SqlASTFactory.java:260)
    at antlr.ASTFactory.create(ASTFactory.java:153)
    at antlr.ASTFactory.create(ASTFactory.java:186)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2038)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2046)


 my hql query code looks like as given below
  for (Iterator iterator = resultList.iterator(); iterator.hasNext(); ) {
            String id = (String) iterator.next();

            if (iterator.hasNext())
                sqlQueryBuff.append(" t.id = '" + id + "' OR");
            else
                sqlQueryBuff.append(" t.id = '" + id + "' ) ");
        }
 query = session.createQuery(sqlQueryBuff.toString());

在這行之后,我得到了整個錯誤

我的Maven依賴如下

<properties>
    <jdk.version>1.6</jdk.version>
    <spring-framework.version>4.0.2.RELEASE</spring-framework.version>
    <hibernate.version>4.3.2.Final</hibernate.version>
    <junit.version>4.11</junit.version>
    <log.version>1.2.14</log.version>

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

請建議我如何解決這個問題

您創建復雜的HQL表達式。 我建議使用“中”代替一長串的“ =”和“或”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM