gpt4 book ai didi

grails - 通过字段A进行查询,如果字段B不为null,则也通过字段B查询HQL grails

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

所以我有这个查询:

"from ProductLookupNumber pln left join pln.creator as creator
where (pln.searchNumber like '%" + query + "%')
or (creator is not null and creator.name like '%" + query + "%')"

我正在使用grails,但是由于某种原因,无论我在提交查询变量的输入字段中写什么,它都会返回空。

下一个查询工作正常。但是我无法按创建者的名字进行过滤:
from ProductLookupNumber pln where (pln.searchNumber like '%" + query + "%')

此其他查询将筛选所有没有创建者的记录:
"from ProductLookupNumber pln " +
"where (pln.searchNumber like '%" + query + "%') " +
"or (pln.creator is not null and pln.creator.name like '%" + query + "%')"

问题是某些ProductLookupNumber记录可以具有一个空创建者,这是一个不同的实例。因此,当我提交查询时,我希望它查找所有具有搜索号String或IF的记录(如果它们有创建者),如果创建者的名称与提交的变量匹配,则包括它们。

更新:

因此,我有一个包含这些记录的表:

搜索号码|创作者|

123个|本田|

12345的| MITSU |

45的| NULL |

我有一个搜索栏,如果输入:12,然后单击我要显示的内容:

搜索号码|创作者|

123个|本田|

12345的| MITSU |

如果我输入本田,则:

搜索号码|创作者|

123个|本田|

如果我输入45,则:

搜索号码|创作者|

12345的| MITSU |

45的| NULL |

谢谢

最佳答案

我对它的工作方式不满意。但是我至少得到了想要的实例列表:

def where_query = ProductLookupNumber.where {
searchNumber =~ "%${query}%" || creator.name =~ "%${query}%"
}
def list = where_query.list()
def list2 = criteria.list {
isNull('creator')
like("searchNumber", "%${query}%")
}
list.addAll(list2)

关于grails - 通过字段A进行查询,如果字段B不为null,则也通过字段B查询HQL grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473053/

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