2010-11-15 2 views
0

Я пытаюсь выполнить namedqueryсомнения относительно JPA namedquery

@NamedQuery(name="getEmployeeDetails",query="select e.username,e.email,e.image,e.firstname,e.lastname from Employee e where e.empid=?1") 

Теперь, когда я выполнить этот запрос в EJB 3.0 Session Bean на то, что является объектом я return.I попытался возвращением Listits возвращающей вектор, который создает исключение classcast. Таблица сотрудников содержит такие поля, как пароль и другие конфиденциальные данные, которые я не хочу извлекать. Поэтому я не использую select e from Employee e. Я учу JPA, кто-нибудь может помочь.

ответ

6

Ниже приведен пример запроса, который извлекает только необходимые поля, но для этого должен быть создан такой конструктор.

Запрос: SELECT NEW package_name.Employee(e.username,e.email,e.image,e.firstname,e.lastname) FROM Employee e where e.empid=?1;

Она возвращает объект Employee с выбранными полями & остальные будут иметь значения по умолчанию.

5

Осмотрите возвращаемый тип, вызвав .getClass() на возвращенный объект. Я предполагаю, что это массив.

Но это не очень хороший способ использования JPA. Выберите весь объект, а затем просто не используйте то, что вам не нужно. Это не такой хит производительности.

+0

спасибо, что проголосовали. Но ответ Nayan был тем, что мне нужно. Спасибо за ваше время в любом случае. – Harish