我有一個HQL問題(在Groovy/Grails中)我希望有人能幫助我。Hibernate HQL和Grails-如何比較集合?
我有一個一對多的標籤集合上進行簡單的資產對象。
class Asset { Set tags static hasMany = [tags:Tag] }
class Tag { String name }
我試圖在HQL做:
用戶通過在一些標籤params.tags
(例如:常規Grails的岩石),並希望返回資產(S )有這些標籤,只有那些確切的標籤。
這裏是我的HQL如果一個或多個標籤的存在,返回資產在資產標籤:
SELECT DISTINCT a FROM Asset a LEFT JOIN a.tags t WHERE t.name IN (:tags)
assetList = Asset.executeQuery(hql, [tags:tokenizedTagListFromParams]
上面的代碼運行完美,但它真的像一個OR
。如果找到任何標籤,它將返回該資產。
我只想要回那有那些完全相同的標籤(在數量上也一樣)的資產。
每次創建新標籤時,我new Tag(name:xxx).save()
這樣我就可以獲取該被要求爲每個標籤的標籤實例和唯一的ID。
我也試着將傳入的標籤轉換爲標籤實例列表,每個標籤都有Tag.findByName(t1)
,還有一個(唯一的)標籤ID列表,上面的HQL沒有運氣。
我將不勝感激任何幫助/建議。
有趣的這實際上解決了我的問題,因爲原來的錯誤實際上是我想要產生的行爲。 – nhouser9 2017-05-08 21:32:30