この件に関していくつかの質問があることは知っていますが、どれもうまくいかないようです。次の Domain オブジェクトを持つ 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から離れたいと思っており、ここではそれが可能であるべきだと信じています.