Grails根据枚举列表属性中的枚举值选择域对象
问题描述:
我无法根据枚举列表中的值从域对象列表中选择项目。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。
答
这是一个棘手的问题,不支持动态发现者。我也不知道如何使用条件查询做到这一点,但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
答
您可以与IST条件查询的答案是her in the forum但你必须对其进行自定义。也许是这样的:
Truck.createCriteria.list ={makes{eq('name', Make.MACK)}
}
我认为每个枚举都有属性名称。
您在查询中存在拼写错误。尝试Truck.findByMakes(Make.MACK) – Medrod 2011-01-28 15:28:03