2012-01-25 79 views
0

我有一個Hibernate在我的項目中運行,我試圖將它設置爲可切換到EclipseLink。我已經在Maven中添加了所有的EclipseLink類,但它們似乎並沒有運行。當我嘗試運行該項目,它結束了:休眠和EclipseLink提供程序

Exception in thread "main" javax.persistence.PersistenceException: 
    No Persistence provider for EntityManager named test 

的persistence.xml文件:https://gist.github.com/1676280

的pom.xml文件與依賴關係:https://gist.github.com/1676282

一旦我將persistence.xml中的提供者切換回Hibernate,一切正常。

+0

我不認爲這將是一個輕鬆的任務切換JPA實現。 – bmoran

回答

2

我在persistence.xml中看到一個重要問題和一些小問題。

最大的問題是您的持久性單元被命名爲「org.knyttl」,但錯誤消息說持久性單元「測試」無法找到。如果你正在尋找「測試」,而pu是「org.knyttl」,那麼你不會找到任何東西。 :)

小問題是您有一些EclipseLink屬性名稱錯誤。 「javax.persistence.target-database」應該是「eclipselink.target-database」,「javax.persistence.logging.level」應該是「eclipselink.logging.level」。

Shaun

+0

發佈問題時,「test」和「org.knyttl」只是一個錯字。不幸的是,這些小問題並沒有解決問題。 –

+0

如果你的持久化單元名稱在persistence.xml和createEntityManagerFactory()的調用匹配,那麼我敢打賭EclipseLink不在你的類路徑中。爲了調試這個,你可以遍歷Persistence.createEntityManagerFactory代碼,並觀察它尋找JPA提供者。它通過嘗試加載類路徑中的所有META-INF/services/javax.persistence.spi.PersistenceProvider文件來定位它們。 –