簡體   English   中英

ID字段上的Grails搜索會引發錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM