Grails内部结合了“ in”和“ isEmpty”,或忽略了“ isEmpty”]]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grails内部结合了“ in”和“ isEmpty”,或忽略了“ isEmpty”]]相关的知识,希望对你有一定的参考价值。
我希望能够编写一个条件,使我可以搜索所有具有特定DevelopmentOfInterest(hasMany)或根本没有任何线索的线索。
我的域模型看起来像这样:
Lead { Set<Development> developmentsOfInterest static hasMany = [ developmentsOfInterest:Development ] }
如果我根据发展情况列表搜索特定列表,则可以在我的标准中使用以下内容:
developmentsOfInterest{ 'in'("id", developments*.id) }
要找到所有没有任何进展的东西,我使用isEmpty
isEmpty("developmentsOfInterest")
所以逻辑告诉我,如果我再将这2个放到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”通过join添加了一堆额外的查询代码。我猜测联接不正确,这会导致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部分过滤条件进一步向上。有人可以帮忙吗?问候,
我希望能够编写一个条件,使我可以搜索所有具有特定DevelopmentOfInterest(hasMany)或根本没有任何线索的线索。我的域模型看起来像这样:...
您可以按如下所示放置您的条件:
我知道这是一个非常老的问题,但是我最近遇到了同一问题,我认为问题是grails将默认为内部联接,从而导致isEmpty被忽略
以上是关于Grails内部结合了“ in”和“ isEmpty”,或忽略了“ isEmpty”]]的主要内容,如果未能解决你的问题,请参考以下文章
grails 2.3.4 结合angular js的智能文件夹结构
如何使用企业 Ivy 实例进行 Grails 依赖管理来解决内部工件