我正在尝试确定如何有效地查找/检索/加载对象。)最小化对数据库的调用和b。)保持代码尽可能优雅/简单(即不编写hql等)。
假设您有两个对象:
public class Foo {
Bar bar
String badge
}
public class Bar {
String name
}
每个Foo都有一个酒吧和一个徽章。还假设所有徽章在条形图中都是唯一的。因此,如果Foo的徽章为“4565”,则没有其他Foo具有相同的徽章#和相同的栏。
如果我有一个条形码ID,我怎样才能有效地检索Foo而不先选择Bar?
我知道我可以这样做:
Foo.findByBadgeAndBar("4565", Bar.findById("1"))
但这似乎会导致Bar表上的select,然后是Foo表上的select。换句话说,我需要生成以下Grails / Hibernate / GORM:
select * from foo where badge="4565" and bar_id="1"
答案 0 :(得分:5)
您可以使用标准
def c = Foo.createCriteria()
def results = c {
eq("badge", "4565")
eq("bar.id", 1L)
}
这会产生一个选择语句