[MAT] OQL查詢字符串長度報NullPointerException異常

查了網(wǎng)上一些博客,似乎目前沒有這個問題的解決方式

問題:
在Eclipse中使用OQL查詢長度大于100的字符串時,報出NullPointerException

查詢語句:

SELECT s FROM java.lang.String s WHERE s.value.length >= 100

錯誤信息:

Executed Query:
SELECT s FROM java.lang.String s WHERE s.value.length >= 100

java.lang.NullPointerException: s.value.length
    at org.eclipse.mat.parser.internal.oql.compiler.Operation$GreaterThanOrEqual.evalNull(Operation.java:277)
    at org.eclipse.mat.parser.internal.oql.compiler.Operation$RelationalOperation.compute(Operation.java:92)
    at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.accept(OQLQueryImpl.java:1161)
    at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.accept(OQLQueryImpl.java:1151)
    at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.filterClasses(OQLQueryImpl.java:1133)
    at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.doFromItem(OQLQueryImpl.java:921)
    at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.internalExecute(OQLQueryImpl.java:690)
    at org.eclipse.mat.parser.internal.oql.OQLQueryImpl.execute(OQLQueryImpl.java:667)
    at org.eclipse.mat.inspections.OQLQuery.execute(OQLQuery.java:52)
    at org.eclipse.mat.inspections.OQLQuery.execute(OQLQuery.java:1)
    at org.eclipse.mat.query.registry.ArgumentSet.execute(ArgumentSet.java:132)
    at org.eclipse.mat.ui.snapshot.panes.OQLPane$OQLJob.doRun(OQLPane.java:468)
    at org.eclipse.mat.ui.editor.AbstractPaneJob.run(AbstractPaneJob.java:34)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

解決方案:
將查詢語句修改為

SELECT s FROM java.lang.String s WHERE s.value.@length >= 100

結(jié)果:

結(jié)果

原因:
不詳,似乎只是對于String是這樣的,而如果是自己編寫的類查詢相關(guān)屬性直接在后面加上屬性名即可,比如一個名稱長度超過5的查詢,寫成下面這樣

select p from Person p where p.name.value.@length > 5
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容