Динамическое предложение SELECT и WHERE - PullRequest
0 голосов
/ 17 мая 2019

У нас есть требование в нашем приложении весенней загрузки, где требуется сгенерировать запрос с динамическим предложением SELECT и предложением WHERE.Пользователь будет выбирать конкретные столбцы во время выполнения, и только те, которые должны быть выбраны.Как этого достичь?Насколько я искал о динамических запросах, я могу понять, что динамическая часть может быть выполнена для предложения WHERE.Но не уверен, как сделать предложение SELECT динамически.

Редактирование, чтобы добавить пример: Таблица имеет columns id, name, role, salary.

Запрос:

select id, name from Table Where role = 'Admin';

Здесь WHERE clause (role = Admin) и столбцы selected(id, name) будут известны только во время выполнения.

1 Ответ

0 голосов
/ 17 мая 2019

Используйте что-то вроде этого

final CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
final CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(getDomainClass());
final Root<T> root = criteriaQuery.from(getDomainClass());

criteriaQuery.select(root);
ParameterExpression<Integer> p = criteriaBuilder.parameter(Integer.class);
criteriaQuery.where(criteriaBuilder.gt(root.get("<whatever>"), p));

final TypedQuery<T> query = em.createQuery(criteriaQuery);
return query.getResultList();

Если это не соответствует вашей идее, взгляните на этот пост Действительно динамичный JPA CriteriaBuilder

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