0

我有一个呼叫方的域并且有很多受邀者。party.invitees 给我一组受邀者的集合。我只想获得一些受邀者,所以我尝试在我的服务中执行以下操作。

partInvitees= event?.invitees?.findAll{[offset: 3,max: 8]}

它没有给出正确的结果。它给了我所有的受邀者,而不是只给了我所要求的具体内容。

4

2 回答 2

0

您可以使用 GORMlist()方法来获取域类的整个集合。如果您只想要集合的一个子集,您可以使用list()一些参数。

如果您的域类名为Invite,您应该使用Invite.list(max: 8, offset: 3, sort: "id", order: "asc")来获取问题中描述的子集。请记住,不同的排序/顺序参数可能会给您不同的结果。

有关详细信息,请参阅list()listOrderBy()文档。

如果你Invites只想要一个特定的Event,你应该阅读 Deigote 的答案。

于 2015-08-26T12:35:31.850 回答
0

findAll您在那里调用的方法不是来自 GORM,而是来自Groovy Collections。因此,即使您对它进行分页(这在 Groovy 和 AFAIK 中是不可能的),您也会将整个集合带入内存。如果您不介意,请执行以下操作:

event?.invitees[offset..(offset-1)+max]

如果集合太大不想带入内存,也可以Invitee直接查询:

Invitee.findAllByEvent(event, [offset: 3,max: 8])

请注意,顺序不一定相同,因为 Gorms'findAllBy不知道集合索引(我假设invitees是一个列表)。您可以使集合索引感知,但这有点棘手

于 2015-08-26T10:09:17.130 回答