2013-04-08 6 views
0

Я пытаюсь улучшить свои навыки в Java EEJava EE/JPA/jpql

Я пытаюсь использовать этот запрос, который я нашел, что это Here

SELECT COUNT(e) FROM Object e WHERE TYPE(e) <> Country 

я использовать его как то

TypedQuery<String> query=(TypedQuery<String>) manager.createQuery 
("SELECT COUNT(e) FROM Object e WHERE TYPE(e) <> Country"); 
List list=query.getResultList(); 
for(Object entity : list) 
System.out.println(entity); 

, но я получаю эту ошибку

Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: FROM near line 1, column 17 [SELECT COUNT(e) FROM Object e WHERE TYPE(e) <> Country] 
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1374) 
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1315) 
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:280) 

У кого-нибудь есть идея, как исправить это?

ответ

0

Неверный синтаксис вашего typedQuery. Вы не должны вводить запрос в TypedQuery.

Использование

TypedQuery<FooBar> query = em.createQuery(MyQuery, FooBar.class); 

вместо

См http://www.objectdb.com/java/jpa/query/api

+0

спасибо Я не думаю, что это является источником ошибок, поскольку он работает с этим запросом «SELECT COUNT (е) от страны e " Я думаю, что ошибка вызвана предложением« Object » –

+0

Ofc, потому что jpa не понимает, что здесь делает объект, поскольку он не является объявленным объектом. Однако, если этот тип запроса возможен, я полагаю, он может исправить. Plz сообщите мне результат ваших исследований. – Gab

+0

привет, вы правы. Jpa не понимает тип Object. Сначала я думал, что этот запрос вернет количество явлений, которые у меня есть в моей базе данных (и это было неправильно), и он работает, когда я изменяю Query следующим образом: «ВЫБЕРИТЕ COUNT (u) ОТ пользователя u ГДЕ ТИП (u) <> Клиент». и возвращает число администраторов есть в моей базе данных Client и Администраторы два типа наследуется от лица пользователя Спасибо за взаимодействие с темой –