将动态查找器与对象ID列表结合使用

时间:2018-07-06 19:50:42

标签: grails gorm grails3

具有给定的类结构

class MyObject {
   Status status;
}

class Status {
   Integer id;
}

我想使用动态查找器基于状态ID值列表进行查询。我想要做的就是这样

MyObject.findAllByStatusInList([1,2,3]);

但这不起作用,因为我的列表需要是Status个对象。我知道我可以建立一个执行此操作的条件,但是我只想知道是否可以使用Dynamic Finders完成此操作?

3 个答案:

答案 0 :(得分:0)

您可以使用 where 子句:

MyObject.where {status.id in [1,2,3]}.find()

UPD

动态查找器不支持别名,因此使用Criteria(或DetachedCriteria)解决方案。

如果 Status 类是域实体,则可以从数据库中检索它们的列表(或加载它们的代理),然后按状态查询 MyObject 列表。

因此,我看不到其他合适的解决方案,而是在您的情况下使用标准

答案 1 :(得分:0)

您仍然可以使用动态查找器来完成此操作。

def statuses = [1, 2, 3].collect { Status.load(it) }
MyObject.findAllByStatusInList(statuses)

From the react-testing-library docs将为您创建一个代理,只要您不访问id以外的任何属性,就不需要从数据库中检索实例。

答案 2 :(得分:0)

您可以使用它。

List < Integer > statuses = [1, 2, 3] MyObject.findAllByStatusInList(statuses)