[英]Grails search on id field throws an error
我有一個搜索頁面,用戶應該能夠根據他們的ID(GORM生成的id,而不是我的域類中的屬性)或者他們的名字來搜索作者。 當我搜索作者的名字時,搜索頁面工作正常但是當我們嘗試搜索他們的ID時,我得到下面的錯誤。
信息:
java.lang.String cannot be cast to java.lang.Long
請讓我知道如何解決這個問題。
這是我在控制器中的搜索方法:
def search(Integer max) {
params.max = Math.min(max ?: 10, 100)
def authorList = Author.createCriteria().listDistinct () {
if ( params.id ) {
eq("id", "%${params.id}%")
}
if ( params.name ) {
ilike("name", "%${params.name}%")
}
respond authorList, model:[authorInstanceCount: Author.count()]
}
替換這個:
eq("id", "%${params.id}%")
同
eq("id", params.long('id'))
params.long('id')
嘗試將參數安全地轉換為Long
,即如果無法執行轉換而不是拋出異常,它將返回null
。
您獲得的例外情況非常豐富。 你試圖通過java.lang.String
,其中到位java.lang.Long
是必需的。 傳遞params.id
而不將其轉換為字符串:
eq("id", params.id) // if params.id is java.lang.Long
// or
eq("id", params.id.toLong()) // if params.id is java.lang.String
在關閉listDistinct()
方法之后你也錯過了關閉大括號listDistinct()
在復制粘貼期間可能是一個錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.