Динамически генерировать jpql-запросы на основе значений, предоставленных / не предоставленных из списков с множественным выбором - PullRequest
0 голосов
/ 10 октября 2018

У меня есть четыре списка выбора на моей HTML-странице, и я извлекаю данные, когда они выбраны.Как мне динамически создать запрос jqpl на основе выбора в списках выбора.

В моем случае есть 4 списка выбора, и пользователь может выбрать опции из всех списков или их комбинацию.Как мне написать свой запрос в этом сценарии?

Мой запрос похож на

SELECT x FROM tablename x WHERE x.column1= :choice1 AND x.column2 = :choice2 AND x.column3 = :choice3 AND x.column4 = :choice4

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Очень просто.Вы можете использовать Map для сохранения параметров в каждом условии, которые проверяют, существует ли choiceX.

Пример:

String jpql = "SELECT x FROM tablename x WHERE 1 = 1 ";

Map<String, Object> parameters = new HashMap<>();

if (choice1 != null) {
    jpql += "x.column1 = :choice1 ";
    parameters.put("choice1", choice1);
}

if (choice2 != null) {
    jpql += "x.column2 = :choice2 ";
    parameters.put("choice2", choice2);
}

Query query = entityManager.createQuery(jpql);

for (Entry<String, Object> entry : parameters.entrySet()) {
    query.setParameter(entry.getKey(), entry.getValue());
}

return query.getResultList();
0 голосов
/ 10 октября 2018

Я предполагаю, что вы можете попробовать это Критерии API

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