2011-01-28 100 views
1

我無法根據枚舉列表中的值從域對象列表中選擇項目。Grails根據枚舉列表屬性中的枚舉值選擇域對象

我的域對象是這樣的:

class Truck { 
    static hasMany = [ makes: Make ] 
} 

其中一個化妝看起來是這樣的:

enum Make { 
    KENWORTH, MACK, VOLVO 
} 

我真的不知道怎麼做類似Truck.findByMake(Make.MACK)給我所有在他們的名單上有這個Make的卡車。這個電話給我這個錯誤:

No property found for name [make] for class [class Truck] 

任何想法? Grails 1.2.2。

+0

您在查詢中存在拼寫錯誤。嘗試Truck.findByMakes(Make.MACK) – Medrod 2011-01-28 15:28:03

回答

2

這是一個棘手的問題,不支持動態發現者。我也不知道如何使用條件查詢做到這一點,但HQL是

def mackTrucks = Truck.executeQuery(
    'select t from Truck t left join t.makes make where make=:make', 
    [make: Make.MACK]) 
+0

感謝伯特,那工作的一種享受。恥辱沒有漂亮的方法來做到這一點。 – bwobbones 2011-01-29 01:59:30

0

您可以與IST條件查詢的答案是her in the forum但你必須對其進行自定義。也許是這樣的:

Truck.createCriteria.list ={makes{eq('name', Make.MACK)} 
} 

我認爲每個枚舉都有屬性名稱。