Использование JPA1.0: как писать запросы - PullRequest
0 голосов
/ 21 июля 2011

Добрый день,

У меня странная проблема:

Это следующее утверждение работает

Запрос q = em.createQuery («ВЫБЕРИТЕ m из AccountClass as m»);

тогда как следующее утверждение не

Запрос q = em.createQuery («ВЫБЕРИТЕ m из AccountClass»);

Я пытаюсь написать утверждение, которое позволяет мне использовать предложение where;

спасибо, что прочитали это.

1 Ответ

0 голосов
/ 21 июля 2011

em.createQuery ожидает, что в качестве параметра будет отправлен запрос JPQL, а не запрос SQL.

SELECT m FROM AccountClass не является допустимым JPQL-запросом, где SELECT m FROM AccountClass m является действительным. Если вы хотите узнать больше о JPQL, вы можете начать с учебной главы Java EE по JPQL .

Причина, по которой SELECT m FROM AccountClass as m работает в этом случае, заключается в том, что AS является необязательным ключевым словом. Если вы хотите выполнить предложение WHERE, сделать это тривиально - SELECT m FROM AccountClass m WHERE m.x= :param1, где x - это атрибут класса AccountClass, а param1 - это именованный параметр, значение которого должно быть установлено с помощью Query.setParameter метод.

...