2010-08-02 52 views
1

標題不清楚,因爲我無法想到一個,但是,我有一個EJB項目,並試圖與JPA玩。要創建實體管理器,我在通過註釋將其注入實體管理器/持久性文件結構

@PersistenceContext(unitName="testConnection") 
private EntityManager em; 

當我運行一個測試查詢,我相信要罰款

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password = 'test'"); 
tu = (TestUser) userQuery.getSingleResult(); 

我得到它向EJB不能夠指向異常創建實體管理器。

奇怪的是,當我運行

tu = (TestUser) em.find(TestUser.class, id); 

它工作正常

我的項目結構是

EAR 
    EJB 
    EJB Client 
    JPA 
     persistance.xml 

,我想這是主要的問題

SEVERE:java.lang.IllegalSt ateException:無法檢索EntityManagerFactory for unitName testConnection

單個項目當前使用依賴項進行鏈接。

所以有什麼想法?

感謝 喬恩

回答

4

我有一個EJB項目,我正在嘗試使用JPA。要創建實體管理器,我通過註釋注入它

註釋部分本身看起來是正確的。

當我運行一個測試查詢,我相信要罰款

,我不認爲它是,它至少缺少一個和WHERE子句。不過,我會寫這樣的實際上是:

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = :name AND u.password = :password"); 
userQuery.setParameter("name", "test"); 
userQuery.setParameter("password", "test"); 
tu = (TestUser) userQuery.getSingleResult(); 

我得到它向EJB不能夠創建實體管理器指向一個例外。奇怪的是,當我運行(...)它工作正常。

鑑於您得到的例外,這確實很奇怪。

我的項目結構是(...)

我不知道這是否是一個錯字或沒有,但它persistence.xml,不persistance.xml,並應位於持久性單元根的META-INF目錄下。

那麼有什麼想法?

修復查詢,修復persistence.xml包裝。另請提供其內容和完整的堆棧跟蹤。

+0

ahh非常感謝你, 持久性名稱是一個錯字。 這是爆炸的查詢(我不敢相信我自己看到它) 我很驚訝它給出的錯誤,作爲一個格式錯誤的查詢的結果。 再次感謝 – Jon 2010-08-02 09:46:32