gpt4 book ai didi

grails - Grails查询:获取关联对象列表

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

我有多对多关系:

class Project {
Set<PrincipalInvestigator> pis
:

static hasMany = [ pis:PrincipalInvestigator ]
}

class PrincipalInvestigator {
String name
:
}

我想要一个查询,该查询返回属于项目预定义列表的PI的唯一且已排序的列表。

天真的方法是遍历项目,并遍历其PI列表,同时删除重复项。做到这一点的代码很简单,但是很慢。

到目前为止,我能想到的最佳解决方案是:
def pi_ids = Project.createCriteria().list{ // find unique list of PI IDs
// project filters here, not relevant to the question
createAlias('pis', 'aka_pis', JoinType.LEFT_OUTER_JOIN)
isNotNull('aka_pis.id')
projections {
distinct('aka_pis.id')
}
}
def pi_list = PrincipalInvestigator.createCriteria().list{ // get PIs from list of IDs
inList('id', pi_ids)
order('name', 'asc')
}

我的解决方案快了一个数量级,但仍然是两个不同的查询。有没有办法在单个查询中获得相同的结果?

最佳答案

使用executeQuery使查询变得更加容易。可以进行以下操作:

PrincipalInvestigator.executeQuery("select distinct p.pis from Project p where p.id in :projectIds", 
[projectIds: [1,2,3]])

关于grails - Grails查询:获取关联对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28702795/

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