gpt4 book ai didi

hibernate - Hibernate HQL和Grails-如何比较集合?

转载 作者:行者123 更新时间:2023-12-02 04:16:03 26 4
gpt4 key购买 nike

我有一个HQL问题(在Groovy / Grails中),我希望有人可以帮助我。

我有一个带有一对多标签集合的简单Asset对象。
class Asset {
Set tags
static hasMany = [tags:Tag]
}
class Tag {
String name
}

我想在HQL中做的事情:

用户传入params.tags中的某些标签(例如:groovy grails rock),并希望返回具有这些标签且仅包含那些精确标签的 Assets 。

如果Assets标签中存在一个或多个标签,这是我的HQL,它会返回Assets:
SELECT DISTINCT a
FROM
Asset a
LEFT JOIN
a.tags t
WHERE
t.name IN (:tags)
assetList = Asset.executeQuery( hql, [tags:tokenizedTagListFromParams]
上面的代码很完美,但实际上就像OR。如果找到任何标签,它将返回该 Assets 。

我只想返回具有完全相同标签(也有数字)的 Assets 。

每次创建新标签时,我都会使用new Tag(name:xxx).save(),这样我就可以获取所请求的每个标签的Tag实例和唯一ID。

我还尝试将传入的标签转换为每个标签带有Tag.findByName(t1)的Tag实例列表,以及将(唯一)标签ID的列表转换为上述HQL的方法,但是没有运气。

我将不胜感激任何帮助/建议。

最佳答案

解决这个问题需要花费大量的脑力。您是否考虑过使用Searchable插件?您可以将Tag设置为Asset的“组件”,然后执行“+ tag:groovy + tag:grails + tag:rocks”之类的搜索。这样可以为您带来所需的结果(可能更快)。

关于hibernate - Hibernate HQL和Grails-如何比较集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756105/

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