2011-01-28 88 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)} 
} 

我认为每个枚举都有属性名称。