执行DatabaseQuery(ReportQuery)时的EclipseLink异常

时间:2016-01-14 12:52:45

标签: java eclipse orm eclipselink

请不要将其作为副本关闭,并引用我的通用NullPointerException答案。我知道NullPointerException是什么。这可能是EclipseLink错误或滥用其框架。

我们使用entityManager.createQuery() api运行一些查询,收到一个SQL字符串(我知道这种做法不好。我们最终会切换到命名查询) 每隔一段时间(不常见)我们就会在NullPointerException得到这个奇怪的ReportItem.getDescriptor(参见下面的整个堆栈跟踪)。

两个奇怪的事情:一个是没有添加行号,第二个,此方法不能抛出NullPointerException - 该方法只返回this.descriptor。 我们认为可能堆栈已损坏且实际异常从ExpressionQueryMechanism:710抛出,因此我尝试在710上使用调试器停止,使描述符为空。在这种情况下,我获得了预期的堆栈跟踪,在710上失败而在ReportItem.getDescriptor上没有。

有没有人遇到过这个?或者也许任何有用的想法可能是什么问题? 我们使用的是EL 2.6.0-M3和JVM:IBM J9 VM(build 2.6,JRE 1.7.0 Linux x86-32 20151019_272770

堆栈跟踪:

Query: ReportQuery(******)
        at org.eclipse.persistence.exceptions.QueryException.prepareFailed(QueryException.java:1596)
        at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:680)
        at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:909)
        at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:613)
        at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:867)
        at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1133)
        at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:403)
        at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:3212)
        at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1802)
        at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1784)
        at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1219)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896)
        at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1802)
        at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1784)
        at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1749)
        at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258)
        at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:469)
        ... 101 more
Caused by: java.lang.NullPointerException
        at org.eclipse.persistence.internal.queries.ReportItem.getDescriptor(ReportItem.java)
        at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.extractStatementFromItem(ExpressionQueryMechanism.java:710)
        at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.buildReportQuerySelectStatement(ExpressionQueryMechanism.java:630)
        at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.buildReportQuerySelectStatement(ExpressionQueryMechanism.java:586)
        at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.prepareReportQuerySelectAllRows(ExpressionQueryMechanism.java:1695)
       at org.eclipse.persistence.queries.ReportQuery.prepareSelectAllRows(ReportQuery.java:1203)
        at org.eclipse.persistence.queries.ReadAllQuery.prepare(ReadAllQuery.java:751)
        at org.eclipse.persistence.queries.ReportQuery.prepare(ReportQuery.java:1071)
        at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:661)
        ... 116 more

0 个答案:

没有答案