2013-04-08 55 views
0

我想提高我的技能中的Java EE的Java 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)由國家工程e「 我認爲錯誤是由」Object「子句造成的 – 2013-04-08 13:05:42

+0

Ofc它是因爲jpa不明白Object在這裏做什麼,因爲它不是一個聲明的實體。但是,如果這種類型的查詢是可能的,我想它可能會修復。 PLZ讓我知道你的調查結果 – Gab 2013-04-08 13:15:38

+0

你好你是對的jpa不明白類型對象,起初我想這個查詢會返回我在我的數據庫中有多少反義詞(這是錯誤的),並且它適用於當我修改這樣的查詢: 「SELECT COUNT(u)FROM User u WHERE TYPE(u)<> Client」。 並返回我有管理員的數量在我的數據庫 客戶端和管理員有兩種類型從實體用戶 感謝您與主題 – 2013-04-08 13:56:26