Grails 3 / GORM 从结果中踢出单个记录
Grails 3 / GORM kick out single records from result
我试图在从文本字段到控制器的 ajax 调用中实现以下目标:
- 根据文本字段中的条件获取电机列表
- 从结果列表中剔除某些值:
Otherdomain
中包含的那些电机(并满足特定条件)不应成为最终结果的一部分
我的做法对吗?缺的砖是什么?
当然,结果数将是 30 减去踢出结果数;如果总行数恰好是 30 行就更好了。
通过这个调用,我试图减少对电机中大量线路的搜索时间 table。
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 and with the help of @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 注入。使用我的第一种方法,我可能会对此进行 运行。
我试图在从文本字段到控制器的 ajax 调用中实现以下目标:
- 根据文本字段中的条件获取电机列表
- 从结果列表中剔除某些值:
Otherdomain
中包含的那些电机(并满足特定条件)不应成为最终结果的一部分
我的做法对吗?缺的砖是什么? 当然,结果数将是 30 减去踢出结果数;如果总行数恰好是 30 行就更好了。
通过这个调用,我试图减少对电机中大量线路的搜索时间 table。
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 and with the help of @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 注入。使用我的第一种方法,我可能会对此进行 运行。