Поддерживает ли аннотация Ignite Spring Data @Query концепцию проекций для извлечения подмножества полей вместо целого объекта? - PullRequest
0 голосов
/ 26 апреля 2019

Мне интересно, поддерживает ли реализация 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, который устраняет проблематичное приведение пользователякод был бы лучше.

1 Ответ

1 голос
/ 26 апреля 2019

Из теста Spring Data:

@Query("SELECT _key, secondName FROM Person WHERE firstName REGEXP ?")
public List<List> selectSeveralField(String val, Pageable pageable);

Например, да, вы можете перечислить несколько полей и получить список (кортежи) этих полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...