JPA выберите запрос с предложением where - PullRequest
12 голосов
/ 28 февраля 2011

Я хочу написать оператор выбора, но не могу понять, как написать предложение where ...

Мой код:

CriteriaQuery query = entityManager.getCriteriaBuilder().createQuery();
query.select(query.from(SecureMessage.class)).where();

Это метод, которому я передаю строку. Я хочу получить только те строки, которые соответствуют значению строки, которую я передаю в метод.

Ответы [ 2 ]

22 голосов
/ 28 февраля 2011

В критериях это что-то вроде:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<SecureMessage> query = cb.createQuery(SecureMessage.class);
Root<SecureMessage> sm = query.from(SecureMessage.class);
query.where(cb.equal(sm.get("someField"), "value"));

В JPQL:

Query query = entityManager.createQuery("Select sm from SecureMessage sm where sm.someField=:arg1");
query.setParameter("arg1", arg1);

См http://en.wikibooks.org/wiki/Java_Persistence/Querying#Criteria_API_.28JPA_2.0.29

17 голосов
/ 28 февраля 2011

Как я понимаю, параметр метода должен быть параметром запроса.

Итак, должно выглядеть так:

Query query = entityManager.getCriteriaBuilder().createQuery("from SecureMessage sm where sm.someField=:arg1");
query.setParameter("arg1", arg1);

где arg1 - ваш метод строкового параметра

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