使用不同的别名多次加入关联

jub*_*ubi 5 grails groovy hibernate

我认为,我遇到的问题是Hibernate中的一个错误(已经跟踪过 - https://hibernate.onjira.com/browse/HHH-879).

我的问题是 - 是否有一种解决方法,使用grails条件查询多次连接表?

SQL将是直截了当的:

SELECT s FROM Store AS s   
    INNER JOIN s.Products AS prod1  
    INNER JOIN s.Products AS prod2  
WHERE 
    prod1.Type = 'Shoes'   
AND 
    prod2.Type = 'Shirts' 
Run Code Online (Sandbox Code Playgroud)

当我在grails标准查询中使用"createAlias"时(一个用于prod1,一个用于prod2),我得到以下错误:

org.hibernate.QueryException:重复的关联路径:studyTags ...

一个可能的方法是,使用OR(一个JOIN和WHERE prod.Type ='Shoes'OR'Birts')进行查询,然后过滤结果集.此解决方案的问题在于,如果我为条件查询指定了限制(最大结果),则实际结果(在过滤之后)可能具有比指定的更少的条目.

任何帮助,将不胜感激.

谢谢.

PS:我的真实代码,我遇到这个问题非常复杂.为了解决这个问题,我在商店和产品中使用了这个例子...我认为查询看起来像

Store.withCriteria{
    createAlias('products', 'prod1')
    createAlias('products', 'prod2')

    and{
        eq('prod1.Type', 'Shoes')
        eq('prod2.Type', 'Shirts')
    }
}
Run Code Online (Sandbox Code Playgroud)

gka*_*mal -3

您是否尝试过此操作 - 我认为这将返回包含“鞋子”和“衬衫”类型产品的所有商店

Store.withCriteria{
    createAlias('products', 'prod')

    and{
        eq('prod.Type', 'Shoes')
        eq('prod.Type', 'Shirts')
    }
}
Run Code Online (Sandbox Code Playgroud)