Grails 根据枚举列表属性中的枚举值选择域对象

Grails select domain objects based on an enum value in an enum list property

我无法根据枚举列表中的值从域对象列表中选择项目。

我的域对象如下所示:

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

Make 看起来像这样:

1
2
3
enum Make {
  KENWORTH, MACK, VOLVO
}

我不太确定如何使用 Truck.findByMake(Make.MACK) 之类的方法将所有在其制造列表中具有此制造的卡车提供给我。这个电话给了我这个错误:

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

有什么想法吗? Grails 1.2.2.


这个很棘手,动态查找器不支持。我也不知道如何使用 Criteria 查询来做到这一点,但 HQL 会是

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


您可以使用标准查询使论坛中的答案是她,但您必须对其进行自定义。可能是这样的:

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

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