Grails基于枚举列表属性中的枚举值选择域对象

Grails基于枚举列表属性中的枚举值选择域对象,grails,gorm,Grails,Gorm,根据枚举列表中的值从域对象列表中选择项时遇到问题 我的域对象如下所示: class Truck { static hasMany = [ makes: Make ] } enum Make { KENWORTH, MACK, VOLVO } Truck.createCriteria.list ={makes{eq('name', Make.MACK)} } 如果Make看起来像这样: class Truck { static hasMany = [ makes: Make

根据枚举列表中的值从域对象列表中选择项时遇到问题

我的域对象如下所示:

class Truck {
  static hasMany = [ makes: Make ]  
}
enum Make {
  KENWORTH, MACK, VOLVO 
}
Truck.createCriteria.list ={makes{eq('name', Make.MACK)}
}
如果Make看起来像这样:

class Truck {
  static hasMany = [ makes: Make ]  
}
enum Make {
  KENWORTH, MACK, VOLVO 
}
Truck.createCriteria.list ={makes{eq('name', Make.MACK)}
}
我真的不知道怎么做像Truck.findByMake(Make.MACK)这样的东西,让我知道所有的卡车在他们的品牌列表中都有这个品牌。那个电话给了我这个错误:

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

有什么想法吗?Grails1.2.2.

这是一个棘手的问题,动态查找程序不支持它。我也不知道如何使用条件查询来实现这一点,但HQL将是

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

您可以使用条件查询ist,但您必须对其进行自定义。也许是这样:

class Truck {
  static hasMany = [ makes: Make ]  
}
enum Make {
  KENWORTH, MACK, VOLVO 
}
Truck.createCriteria.list ={makes{eq('name', Make.MACK)}
}

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

您在查询中有一个输入错误。试试Truck.findByMakes(Make.MACK)谢谢Burt,真是太棒了。遗憾的是,grails没有很好的方法来实现这一点。自2011年以来,grails有没有任何更新来支持DynamicFinder中的这一点?