我知道有關於這個問題的幾個問題,但沒有人似乎爲我工作。我有一個Grails應用程序有以下域對象:的Grails:查詢的hasMany關聯
class Tag {
String name
}
class SystemTag extends Tag {
// Will have additional properties here...just placeholder for now
}
class Location {
String name
Set<Tag> tags = []
static hasMany = [tags: Tag]
}
我想查詢已經標記由1個或多個標籤的所有區域對象:
class LocationQueryTests {
@Test
public void testTagsQuery() {
def tag = new SystemTag(name: "My Locations").save(failOnError: true)
def locationNames = ["L1","L2","L3","L4","L5"]
def locations = []
locationNames.each {
locations << new Location(name: it).save(failOnError: true)
}
(2..4).each {
locations[it].tags << tag
locations[it].save(failOnError: true)
}
def results = Location.withCriteria {
tags {
'in'('name', [tag.name])
}
}
assertEquals(3, results.size()) // Returning 0 results
}
}
我已經驗證了數據正在創建/設置正確... 5創建位置對象,並標記最後3個對象。
我看不出有什麼不對上面的查詢。我真的希望遠離HQL,我相信在這裏應該是可能的。
'Location.count()'返回5?您可能需要爲保存呼叫添加'flush:true'。 – doelleri