gpt4 book ai didi

grails - 如何使用Grails GORM获得不同的结果

转载 作者:行者123 更新时间:2023-12-02 14:31:02 25 4
gpt4 key购买 nike

我在两个对象之间有一对多的关系。像订单和物品

class Order {
static hasMany = [items: ItemModel]
...//some properties
}

class ItemModel {
// some properties
}

class SearchController {
def doSearch() {
def criteriaOrder = Order.createCriteria();
def order = criteriaOrder.list(params) {
and {
items {
like("partNumber", itemName)
}
or {
if (customerName){
like('bclientName', customerName)
like('dclientName',customerName)
}
}
if (fromDate && toDate) {
between('orderDate', fromDate,toDate)
}
}
}
}
}

当我要搜索时,它给出重复的结果。我在列表对象上使用了unique(),它给出了不正确的信息,但是分页不起作用。

最佳答案

distinct projection添加到您的查询中:

基于不同的解决方案:

def order =  criteriaOrder.list(params) {
projections{
distinct 'id'
property 'bclientName'
property 'dclientName'
property 'orderDate'
// add further props you need to show in the list
}
and {
items {
like("partNumber", itemName)
}
....
}.collect{
Order o = new Order( bclientName:it[ 1 ], dclientName:it[ 2 ], orderDate:it[ 3 ] )
o.id = it[ 0 ]
o
}

基于groupBy的解决方案:
def order =  criteriaOrder.list(params) {
projections{
groupProperty 'id'
max 'orderDate'
}
and {
items {
like("partNumber", itemName)
}
....
}

关于grails - 如何使用Grails GORM获得不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com