使用带有对象 ID 列表的动态查找器

Use dynamic finders with list of Object IDs

使用给定的 class 结构

class MyObject {
   Status status;
}

class Status {
   Integer id;
}

我想使用动态查找器根据状态 ID 值列表进行查询。我想做的是这样的

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

虽然这不起作用,因为我的列表需要 Status 个对象。我知道我可以建立一个标准来做到这一点,但我只想知道是否有办法用动态查找器来完成这个?

您可以使用 where 子句:

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

UPD

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

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

所以除了在你的情况下使用 Criteria,我看不出其他合适的解决方案。

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

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

load() 将为您创建一个代理,只要您不访问除 id.

以外的任何属性,就不需要从数据库中检索实例

你可以用这个。

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