gpt4 book ai didi

hibernate - 在Grails中使用like非字符串列

转载 作者:行者123 更新时间:2023-12-02 14:58:09 25 4
gpt4 key购买 nike

我目前正在研究Grails查询服务,该服务涉及使用称为filterText的特定条件从数据库中检索行。

List getAdjustmentCodes(params) {
def filterText = params.filterText
.
.
.
adjustmentCodeList = AdjustmentCode.findAll{
or {
ilike('description', "%$filterText%")
// ilike('id', "%$filterText%")
}
}

return adjustmentCodeList
}

注意,我已经注释掉了 ilike('id', "%$filterText%")行,因为当程序到达该行时,它将引发错误:

org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type java.lang.Long for value...



这可能是因为该表的 id列的类型为 long:
class AdjustmentCode implements Serializable {
Long id
String description
String type
String status
Date statusDate
String lastUpdateBy
Date lastUpdateDate

static mapping = {
table 'RFADJUSTCDOTB'
version false
id column : 'ADJUS_CD'
description column : 'ADJUS_DESC'
type column : 'ADJUS_TYPE'
status column : 'ADJUS_STATCD'
statusDate column : 'ADJUS_STATDTE'
lastUpdateBy column : 'ADJUS_LUPDBY'
lastUpdateDate column : 'ADJUS_LUPDDTE'
}

.
.
.
}

但是我需要为此列使用 like运算符。例如,用户想要使用类似于 code00002312123搜索调整。这是使用 like运算符的正确方法,还是还有其他方法。感谢您的回答。

我已经看过这个 post,但是它没有告诉我们如何在 like子句中的 or上使用非字符串。

最佳答案

好吧,这里是一个替代方案:

class AdjustmentCode implements Serializable {
Long id
String description
.....
String idAsString
static mapping = {
table 'RFADJUSTCDOTB'
...
idAsString formula('to_char(id)') // Or use an equivalent fn to convert it to a String
}

然后,您可以按以下方式使用ilike:
ilike('idAsString', "%${filterText}%")

我想这是个懒惰的出路,但是应该可以。

关于hibernate - 在Grails中使用like非字符串列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30704873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com