的如何使用個createCriteria方法,用於我的Grails應用程序中獲取數據一個非常簡化的例子:的NullPointerException和/或在標準
def c = SomeClassOfMine.createCriteria()
def projects = c.list(max: limit, offset: start) {
eq("userId", userId)
if (owner != null && owner.size() > 0) {
ilike("ownerName", owner + "%")
}
if (someParameter && someParameter.size() > 0) {
or {
ne("validated", 1)
ne("validated2", 1)
}
}
order("name", "asc")
}
在具有或{我得到的NullPointerException沒有消息的行。我嘗試過各種組合,並嚴格遵循各地提供的示例,只是發現如果我嘗試使用和也會遇到同樣的問題。我知道還有其他方法可以獲取數據,但我非常希望使用這種方法。我沒有弄清楚自己可能會出錯,所以......在或/和這樣的代碼塊中可能會導致NullPointerException?
我會提供更多的信息,如果我知道這種情況下什麼是相關的。
編輯:添加一個if子句(其中所有者被選中)代碼示例。
我已經調查了更多,發現問題出在if (owner != null && owner.size() > 0) {
並且更具體一些,變量名owner
。當我更改名稱時,問題就消失了。如果有人能解釋爲什麼會發生這種情況,這將是非常有趣的。
如果您刪除'或{}'附近的條件,它會工作嗎? –
我猜想要麼它不是真正的NPE(我喜歡Groovy,但有時堆棧跟蹤不是最有用的東西),或者NPE來自if語句而不是或{}。 +1爲Rob Hruska的建議嘗試刪除條件和回報... – proflux
我已經調查了更多,並發現你不能指出問題,因爲它是在我沒有顯示的代碼。我會用新的發現來更新我的問題。 – Aidas