gpt4 book ai didi

hibernate - Grails在内部将 “in”和 “isEmpty”组合在一起,或者忽略了 “isEmpty”

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

我希望能够编写一个条件,使我可以搜索所有具有特定DevelopmentOfInterest(hasMany)或根本没有任何线索的线索。

我的域模型如下所示:

Lead {
Set<Development> developmentsOfInterest
static hasMany = [
developmentsOfInterest:Development
]
}

如果我根据发展情况列表搜索特定列表,则可以在标准中使用以下内容:
developmentsOfInterest{
'in'("id", developments*.id)
}

为了找到所有没有任何进展的东西,我使用了isEmpty
isEmpty("developmentsOfInterest")

所以逻辑告诉我,如果我然后将这两个放到一个OR中,我会得到合并的列表。
or{
isEmpty("developmentsOfInterest")
developmentsOfInterest {
'in'("id", developments*.id)
}
}

它不会..它只会返回感兴趣的列表(基本上忽略“isEmpty”)

sql 生成的如下
where (this_.account_id=? and (not exists (select 1 from lead_development where this_.id=lead_developments_of_interest_id) or (developmen1_.id in (?, ?))))
但是我认为这将是正确的sql命令?它读取正确:
(not exists (select 1 from lead_development where this_.id=lead_developments_of_interest_id) or (developmen1_.id in (?, ?))
更新:
我比较了isEmpty()或sizeEq()和“in”生成的SQL,“in”通过连接添加了一大堆额外的查询代码。
我猜测联接不正确,这导致isEmpty无法正常工作(因为它将仅显示与developmentOfInterests联接的项目)
where (this_.account_id=? and (? = (select count(*) from lead_development where this_.id=lead_developments_of_interest_id) or this_.id in (?))) order by lower(this_1_.first_name) asc limit ?

过滤条件的Account_id部分进一步向上。
有人可以帮忙吗?
问候,

最佳答案

您可以将您的条件如下:

or{
sizeEq 'developmentsOfInterest', 0
'in' 'developmentsOfInterest', developments
}

关于hibernate - Grails在内部将 “in”和 “isEmpty”组合在一起,或者忽略了 “isEmpty”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098885/

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