Эквивалент TypedQuery для JPA 1.0

#jpa-2.0

#jpa-2.0

Вопрос:

Я совсем новичок в JPA и использую учебник Apress JPA2, чтобы изучить его. Я пытался выполнить первый пример из книги. Следующая строка кода выдает ошибку:

Запрос TypedQuery = em.CreateQuery(«ВЫБРАТЬ e ИЗ Employee e», Employee.class );

говорят, что TypedQuery не может быть преобразован в тип. После некоторых усилий я понял, что использую JPA версии 1, которая не содержит TypedQuery, а просто интерфейс запроса.

Мой вопрос заключается в том, существует ли эквивалентный оператор в JPA версии 1. Пожалуйста, помогите. Заранее спасибо.

Ответ №1:

Поскольку TypedQuery был введен с JPA-2.0, необходимо перейти на интерфейс запроса.

1) Собственный запрос для сопоставления типа результата для запроса (потеря переносимости).

 Query selectQuery = entityManager.createNativeQuery("SELECT
 e FROM Employee e", Employee.class);
  

2) Создание запроса и затем явное приведение его к типу результата (более предпочтительно).

 Query selectQuery = entityManager.createQuery("SELECT e FROM Employee e")
List<Employee> employees = (List<Employee>)selectQuery.getResultList(); //Multiple Result
Employee employee = (Employee)selectQuery.getSingleResult(); //Single Result