Загружать данные из datastore при помощи objectify можно группами(то есть по частям). Для этого можно использовать средства из библиотеке Guava. Это метод Lists.partition, в который передаем два параметра - список ключей и количество элементов в группе (например 25).
Подготовленный лист с ключами передаем в метод ids и получаем список значений.
for (List<String> list : Lists.partition(new ArrayList<>(ids), 25))
Подготовленный лист с ключами передаем в метод ids и получаем список значений.
result.addAll(ofy().load().type(UserEntity.class).ids(list).values());
public List<UserEntity> getUserEntities(Collection<Long> userIds, Long systemId) { List<UserEntity> result = new ArrayList<>(); if (userIds == null) { return result; } List<String> ids = new ArrayList<>(); for (Long id : userIds) { ids.add(UserEntity.generateKey(systemId, id)); } for (List<String> list : Lists.partition(new ArrayList<>(ids), 25)) { result.addAll(ofy().load().type(UserEntity.class).ids(list).values()); } return result; }
Комментариев нет:
Отправить комментарий