我有一個查詢建造與EntityManager
:JPA查詢例外
Query q = em
.createQuery("SELECT * FROM :table WHERE username = :username AND password = MD5(:password)")
.setParameter("table", User.class.getName())
.setParameter("username", txtLogin.getText())
.setParameter("password", passPassword.getPassword())
;
User user = (User) q.getSingleResult();
,但我得到一個異常:在線程 「AWT-EventQueue的 - 0」 java.lang.IllegalArgumentException異常
例外:在EntityManager中創建 查詢時發生異常 :
異常 說明:語法錯誤解析 查詢[S ELECT * FROM:表WHHER username =:username AND password = MD5(:password)],line 1,column 7: unexpected token [*]。
如何解決?
在查詢中不可能使用*
嗎?
這JPA規範的一部分,說:「選擇」是可選的?特別是,在JPA2規範的第4.2.1節中,我們有「select_statement :: = select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause]」「select_clause」根本不是可選的 – DataNucleus 2010-10-06 10:17:41
我不知道規格。但是,如果你想要一個'select * from',那麼你不需要輸入SELECT。你可以寫FROM。也許是支持這個的hibernate,而不是專門的jpa。 – 2010-10-06 10:26:57