У меня есть модель Домена с OrgRoleInstance с hasMany = {sites: Site}, и сущность домена Site с serveTo = [org: OrgRoleInstance]
Я не хочу использовать статическое отображение = {}предложение в доменном объекте, поскольку я хочу управлять стратегией выборки через запросы.
Я настраиваю несколько модульных тестов, подобных этому, и настраиваю 3 организации и по одному сайту каждый
void "list with eager fetch query"() {
given :
def orgs = OrgRoleInstance.list(fetch:[sites:"eager"])
println "org b.sites : " + orgs[1].sites
println "site #2 has org as : " + (Site.list())[1].org
expect :
Site.count() == 3
orgs.size() == 3
orgs[1].getName() == "B"
orgs[1].sites.size() == 1
}
void "where query"() {
given :
def orgs = OrgRoleInstance.where {
name =~ "%B%" &&
sites{}
}.list()
expect : //actual get null in orgs
Site.count() == 3
orgs[0].name == "B"
orgs[0].sites.size() == 1
}
void "criteria query " () {
given:
OrgRoleInstance org
org = OrgRoleInstance.withCriteria (uniqueResult: true) {
//eq 'name', "B"
and {
idEq(2)
eq ('name', "B")
}
}
def orgs = OrgRoleInstance.withCriteria {
eq 'name', "B"
//fetchMode 'sites', FetchMode.SELECT
sites{}
}
orgs
expect: //actual sites is size=0
org.id == 2
org.sites.size() == 1
}
Что я делаю не так - средний тест возвращает нуль из запроса, другие возвращают OrgRoleInstance, носвойство sites пустое.
Я проверил настройки и сайты правильно сохранены и ссылаемся на них org - поэтому модель домена правильная.
Что я делаю неправильно при записиэти запросы?
PS Я пробовал запрос where со многих сторон, и он, похоже, работает и загружает родительский сайт в результате.
//this one works
void "where query from the many side "() {
given :
def site = Site.where {
org.id == 2
}.list()
expect :
Site.count() == 3
site.org.name == ["B"]
}