gpt4 book ai didi

grails - Grails createCriteria多对多

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

想象一下,我有以下内容(这是我网站的搜索机制)

class Supermarket {    
String sp_name
String sp_street
}

class Products {
String p_name
String p_price
}

class products_supermarket{
Supermarket sp
Products pro
}

现在我要创建一个条件:
def c = Supermarket.createCriteria()
def results = c.list {
like("sp_street", params.street)
and {
************ ... params.product
}
maxResults(10)

}

我想要的地方*我希望能够找到在product_supermarket类上进行超搜索的产品。怎么做?

PS。如果条件是作为一个each()方法,遍历所有超市,则我可以使用if-else语句搜索产品,如果可以使用,可以使用: idEq(it),其中 是超市ID 。这样我会做到的。我的问题是,我不知道如何获取当前的超市ID。有什么帮助吗?

最佳答案

  • and应用于内的条件,因此没有必要将其应用于单个语句。顶级条件是and-由defauilt设置。
  • 通常,最好不要使用连接器类,而只需在域类中使用hasMany: SupermarkethasMany: Product。连接器表将由Hibernate自动生成。
  • 如果您坚持使用ProductsSupermarket连接器类,请在其类中添加belongsTo: SupermarketbelongsTo: Product,并将“hasMany:ProductsSupermarket”添加到其他两个类中,否则您将失去Grails的GORM优势。
  • 有一个部分"Querying Associations" in the doc
  • 对象的id就是这样简单:mySupermarket.id,或者如果键字段的名称不同,则为mySupermarket.ident()。默认情况下,id字段自动添加到类和表中。

  • 因此查询为:
    List<Supermarket> results = Supermarket.withCriteria {
    like("sp_street", params.street)
    productSupermarket {
    product {
    idEq(params.product)
    }
    // or just eq('product', someProduct)
    }
    ************ ... params.product
    maxResults(10)
    }

    关于grails - Grails createCriteria多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632010/

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