grails 中 LIKE 的 HQL 查询

发布于 2024-12-09 19:00:00 字数 179 浏览 0 评论 0 原文

我想知道HQL是否可以处理如下查询

“在column1或column2或Table1中查找类似“abc”或“def”或...的值”

所以我有多个参数,并且我想搜索两个任何参数值的列通配符。

我正在做 grails,如果更愿意的话,我想使用executeQuery 函数,但不知道如何编写这个函数。

I want to know if HQL can handle a query such as the following

"find the values LIKE "abc" or "def" or ... in either column1 or column2 or Table1"

So I have multiple parameters, and I want to search two columns wildcard for any of the parameter values.

I am doing grails, and if preferable would like to use the executeQuery function, but not sure how to write this one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痕至 2024-12-16 19:00:00

您可以应用任何 HQL您的查询的表达式。例如:

from Table1 where column1 like :param1 or column2 like :param2

但是,您必须在参数本身中应用 % 运算符。


您还可以使用 GORM 标准构建器与 Hibernate 标准限制

Table1.withCriteria {
    like('column1', param1)
    or {
        like('column2', param2)
    }     
}

You can apply any of the HQL Expressions to your query. For example:

from Table1 where column1 like :param1 or column2 like :param2

You have to apply the % operator in the parameters themselves however.


You can also perform your query using the GORM criteria builder with Hibernate criterion restrictions:

Table1.withCriteria {
    like('column1', param1)
    or {
        like('column2', param2)
    }     
}
神经暖 2024-12-16 19:00:00

我建议改用条件查询:

def criteria = Table1.createCriteria()

def results = criteria.listDistinct {
    or {
        or {
            like('column1', "%abc%")
            like('column1', "%def%")
        }

        or {
            like('column2', "%abc%")
            like('column2', "%def%")
        }
    }
}

如果您不想排除重复项,请将 listDistinct 替换为 list。我还没有测试过上面的内容,所以它可能充满了错误,但希望能有所帮助。

I'd recommend using a criteria query instead:

def criteria = Table1.createCriteria()

def results = criteria.listDistinct {
    or {
        or {
            like('column1', "%abc%")
            like('column1', "%def%")
        }

        or {
            like('column2', "%abc%")
            like('column2', "%def%")
        }
    }
}

If you don't want to exclude duplicates replace listDistinct with list. I haven't tested the above, so it's probably riddled with errors, but hopefully will prove to be of some help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文