2010-05-03 54 views
0

我試圖確定如何根據a)有效地查找/檢索/加載對象。)最小化對數據庫和b的調用。)將代碼保持爲優雅/儘可能簡單(即不寫hql等)。使用GORM在Grails中高效地檢索對象,使用GORM

假設你有兩個對象:

public class Foo { 
    Bar bar 
    String badge 
} 

public class Bar { 
    String name 
} 

每個美孚擁有一間酒吧和徽章。還假設所有徽章在酒吧內都是獨一無二的。所以如果一個Foo有一個徽章「4565」,沒有其他的Foos擁有相同的徽章和同一個條。

如果我有一個酒吧ID,我如何有效地回顧Foo w/o首先選擇酒吧?

我知道我能做到這一點:

Foo.findByBadgeAndBar("4565", Bar.findById("1")) 

,但似乎導致選擇在吧檯後面是選擇在富表。換句話說,我需要產生的Grails /休眠/ GORM相當於如下:

select * from foo where badge="4565" and bar_id="1" 

回答

5

你可以使用標準

def c = Foo.createCriteria() 
    def results = c { 
     eq("badge", "4565") 
     eq("bar.id", 1L) 
    } 

這導致一個SELECT語句

+0

看起來不錯,這應該工作。我會給它一個鏡頭。謝謝一堆。 – bebeastie 2010-05-04 02:05:44