请不要将其作为副本关闭,并引用我的通用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