Мне интересно, поддерживает ли реализация Apache Ignite Spring Data концепцию проекций , чтобы упростить извлечение только подмножества полей / атрибутов объектов кэша вместо выборки всего объекта, который может иметь много столбцов.
В документах я вижу пример, в котором выбирается только один атрибут объекта кэша, как показано ниже.
/**
* Getting ids of all the Person satisfying the custom query from {@link Query} annotation.
*
* @param orgId Query parameter.
* @param pageable Pageable interface.
* @return A list of Persons' ids.
*/
@Query("SELECT id FROM Person WHERE orgId > ?")
public List<Long> selectId(long orgId, Pageable pageable);
Если взять приведенный выше пример, как это сделать, если нужно ОБА «id» & «firstName», «lastName» объекта «Person» вместо просто «id», как указано выше?
Спасибо
ОБНОВЛЕНИЕ (Опубликовать ответ от @alamar): Спасибо @alamar!Я также воспроизвожу объявление метода и его код использования из кода Spring Data Test, чтобы другим было легко последовать за ответом.
/** */
@Query("SELECT _key, secondName FROM Person WHERE firstName REGEXP ?")
public List<List> selectSeveralField(String val, Pageable pageable);
/** */
public void testSelectSeveralFields() {
List<List> lists = repo.selectSeveralField("^[a-z]+$", new PageRequest(2, 6));
assertEquals(6, lists.size());
for (List list : lists) {
assertEquals(2, list.size());
assertTrue(list.get(0) instanceof Integer);
}
}
Тем не менее, имеется механизм типа Spring Data Projection, который устраняет проблематичное приведение пользователякод был бы лучше.