我知道关于这个主题有几个问题,但似乎没有一个对我有用。我有一个带有以下域对象的 Grails 应用程序:
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 个或多个标签标记的所有 Location 对象:
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,我相信这应该是可能的。