gpt4 book ai didi

sql - Grails查询以过滤关联并仅返回匹配的实体

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

我具有以下1-M(单向)关系:

Customer (1) -> (M) Address

我正在尝试过滤包含某些文本的特定客户的地址,例如
def results = Customer.withCriteria {
eq "id", 995L
addresses {
ilike 'description', '%text%'
}
}

问题在于,这将返回客户,而当我依次访问“地址”时,它将为我提供完整的地址列表,而不是经过过滤的地址列表。

我无法使用 Address.withCriteria,因为我无法从条件查询中访问关联表。

我希望避免返回原始SQL查询,因为这将意味着无法使用大量功能以灵活和可重用的方式建立标准查询。

很想听听任何想法...

最佳答案

我相信2.1中不同行为的原因已记录在here

具体而言:

The previous default of LEFT JOIN for criteria queries across associations is now INNER JOIN.



IIRC,当您使用内部联接时,Hibernate不会急于加载关联。

看起来您可以使用 createAlias指定外部联接 example here:

我在这个特定问题上的经验来自NHibernate的经验,因此我无法真正提供更多有关它能够正常工作的信息。如果发现答案有误,我会很乐意删除。

关于sql - Grails查询以过滤关联并仅返回匹配的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12058396/

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