gpt4 book ai didi

sql - Groovy 中的动态命名参数?

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

我发现在 Groovy SQL 中可以做到这一点真的很酷:

def resultList = Domain.executeQuery('select * from languages where name = :name', [name: 'Groovy'])

我正在尝试让 HQL“in”关键字与用作参数的动态列表一起使用,而不是固定列表。

我也知道你可以使用“?” SQL 参数的运算符,而不是使用命名参数。但是根据这个问题:

Doing an "IN" query with Hibernate

“in”关键字只支持命名参数和位置参数,不支持“?”范围。问题是,当我尝试做这样的事情时:

def paramMap = [:]
paramMap.put("name", "groovy")

def resultList = Domain.executeQuery('select * from languages where name = :name', paramMap)

我收到一条错误消息,说我没有指定参数名称。所以就好像我没有实际指定参数“名称”一样。我在这里阅读了关于命名参数的 Groovy 文档:

http://groovy.codehaus.org/api/groovy/sql/Sql.html

但是所有使用命名参数的示例都使用预定义的参数列表。我已经搜索并没有找到使用动态参数列表映射的示例。如何将参数的动态映射传递给 Groovy 命名 SQL 查询?如果那不可能,我如何在动态列表中使用“in”关键字?

需要说明的是,我正在构建一个动态 SQL 查询,并且我希望能够在进行过程中将参数添加到 map 或列表中。我之前使用的是“?”运算符,直到我不得不使用“in”子句,它不适用于“?”。

最佳答案

为什么不尝试使用闭包查找所有内容?

def paramMap = [:]
paramMap.put("name", "groovy")
def resultList = Domain.findAll {
paramMap.containsValue(name)
}

这是文档,希望对您有所帮助! http://grails.org/doc/latest/ref/Domain%20Classes/findAll.html

关于sql - Groovy 中的动态命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24143654/

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