Методы JPA CriteriaBuilder: ключи и значения.Как их использовать? - PullRequest
3 голосов
/ 31 марта 2019

Как используются два следующих метода CriteriaBuilder?Вы когда-нибудь использовали их или видели, как они используются в реальных приложениях?Я не могу найти пример в Интернете.Чтение комментариев к коду: значения и ключи создают выражение коллекции, которое можно передать в size (), isMember () и т. Д.

//get the values and keys collections of the Map, which may then
//be passed to size(), isMember(), isEmpty(), etc

/**
 * Create an expression that returns the values of a map.
 *
 * @param map map
 *
 * @return collection expression
 */
<V, M extends Map<?, V>> Expression<Collection<V>> values(M map);

/**
 * Create an expression that returns the keys of a map.
 *
 * @param map map
 *
 * @return set expression
 */
<K, M extends Map<K, ?>> Expression<Set<K>> keys(M map);

Но зачем нужен JPA для определения размера коллекции,или проверить, является ли элемент членом коллекции?Похоже, что это можно сделать на Java, нет необходимости в JPA.

1 Ответ

0 голосов
/ 31 марта 2019

Я просто отвечу на 2-й вопрос.

Зачем нужен JPA, чтобы определить размер коллекции или проверить, является ли элемент членом коллекции?Кажется, что это может быть сделано в Java, нет необходимости в JPA.

Эти методы JPA используются для построения запросов.Создание условия перед извлечением данных из БД более эффективно, так как загружает все данные и затем фильтрует их в Java.

Например, у пользователя больше ролей.Мы хотим загрузить пользователей с определенной ролью.Для этого используется member of JPQL зарезервированное слово.

select u from User u where :specificRole member of u.roles

Таким же образом можно использовать size(), is empty.https://www.objectdb.com/java/jpa/query/jpql/collection

...