如何使用预测和标准获得不同的结果

时间:2011-01-04 09:14:19

标签: hibernate gorm grails

我正在尝试使用Grails中的Criteria加载不同的父级。查询如下

查询:

def criteria = Parent.createCriteria();
        results =  criteria.list(max:params.max, offset:params.offset){
            projections{ groupProperty('id') }
            children{
                books{
                    like('title',"%book")
                    }
                }
            order("id","asc")
        }

域类

    class Parent {

    String name

    static hasMany = [children:Child]

    static constraints = {
    }
}


class Child {

        String name
        Parent parent

        static belongsTo = [parent:Parent]
        static hasMany =   [books:Book]
        static constraints = {
        }
    }


class Book {

        String title
        Child child

        static belongsTo = [child:Child]
        static constraints = {
        }
    }

问题:我无法获得明确的父行。

其他采用的方法及其结果:我不知道为什么 groupProperty 无效。我在投影中尝试了 distinct 而不是 groupProperty ,它也不是很有效!如果我使用 criteria.listDistinct 而不是 criteria.list ,那么我可以获得不同的父行,但是之前的方法需要从额外获取 totalCount 查询分页。因此,我非常喜欢使用 criteria.list

获取不同的父行

提前致谢

1 个答案:

答案 0 :(得分:3)

如果更改条件查询以包含不同的根实体结果转换器,则可以获得与criteria.listDistinct相同的效果:

    results =  criteria.list(max:params.max, offset:params.offset){
        children{
            books{
                like('title',"%book")
                }
            }
         resultTransformer Criteria.DISTINCT_ROOT_ENTITY            
         order("id","asc")
    }

但是有一个原因,为什么grails不会返回listDistinct调用的分页结果,因此可能需要使用in运算符求助于HQL查询