2012-03-26 52 views
2

枚举集查询关联我试图在Grails的1.2.1查询,发现所有产品均由租户类型。与Grails中

我的解决方案的工作,但是是非常低效的,首先我检索所有产品,然后找到一个给定的承租人所有匹配的结果。

我发现JIRA相关的bug:Enum as collection

class Product { 
    Set<TenantType> tenants 
    static hasMany = [tenants: TenantType] 
} 

enum TenantType { 
    BICYCLE, 
    MOTORCYCLE 
} 

def tenant = TenantType.BICYCLE 
Product.list().findAll { product -> tenant in product.tenants } 

有查询该数据的更有效的方法?

+0

[Grails选择域对象基于枚举列表属性中的枚举值](http://stackoverflow.com/questions/4829823/grails-select-domain-objects-based -on-AN-枚举值在-AN-枚举列表属性) – 2015-10-06 10:25:24

回答

3

类似的问题被问到here,正如答案中指出的那样,它看起来像Hibernate不支持像枚举这样的值类型集合的条件查询。一种选择是用一个HQL查询,而不是:

Product.executeQuery('from Product p inner join p.tenants tenants 
         where tenants = :tenant', [tenant: TenantType.BICYCLE]) 
0

可以不执行加入:

Product.executeQuery('from Product where :tenant in elements(tenants)', [tenant: TenantType.BICYCLE])