gpt4 book ai didi

Grails 3/GORM 从结果中剔除单个记录

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

我试图在从文本字段到 Controller 的 ajax 调用中实现以下目标:

  • 根据文本字段
  • 中的条件获取电机列表
  • 从结果列表中剔除某些值:Otherdomain 中包含的那些电机(并满足一定的标准)不应成为最终结果的一部分

  • 我的做法对吗?丢失的砖是什么?
    当然,结果数将是 30 减去踢出结果数;如果总行数正好是 30 行会更好。

    通过这个调用,我试图减少 Motor 表中大量行的搜索时间。
    def criteria =  Motor.createCriteria()
    def motorlist = criteria.list {
    like ("motornumber", "%" + params.search + "%")
    maxResults(30)
    order("motornumber","asc")
    }
    motorlist.each { mt ->
    Otherdomain.findByMotor(mt).each { rd ->
    if (rd.kickoutCriteriaIsTrue) {
    // REMOVE MOTOR from result "motorlist" needed
    }
    }
    }

    response.setContentType("application/json")
    render motorlist as JSON

    提前感谢您的任何提示

    最佳答案

    在对 HQL 进行更多研究后并在 @Daniel 的帮助下的评论,我最终使用了这个,对此我很满意:

    def reparaturstatuserledigt = Reparaturstatus.findByStatus('done')
    def hqlstring = "SELECT m " + \
    "FROM Motor m " + \
    "WHERE m.motorennummer LIKE :searchterm AND " +
    "m not in (SELECT motor FROM Reparaturdetail rd WHERE rd.motor = m and rd.detailstatus <> :detailstatus)"
    def motorlist = Motor.executeQuery(hqlstring, [detailstatus: reparaturstatuserledigt, searchterm:'%'+params.search+'%', max: 30, offset: 0])
    response.setContentType("application/json")
    render motorlist as JSON

    值得注意的是,我使用的是命名参数 searchterm这可以防止 SQL 注入(inject)。使用我的第一种方法,我可能会遇到这种情况。

    关于Grails 3/GORM 从结果中剔除单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54292887/

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