2009-09-09 61 views
1

我必須在其他人開發的項目上測試一些項目,但對我來說是新項目。 他們使用Hibernate作爲JPA實現。如何測試是否找到persistence.xml?

我得到了一臺虛擬機,其中設置了一切,但是當我想啓動任何Testclient(小型控制檯程序,沒有Unittesting)時。我總是得到同樣的錯誤。

Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:698) 
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33) 
    ...  
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set 
    at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57) 
    at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39) 
    at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:409) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:119) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2006) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1289) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691) 
    ... 7 more 

項目結構看起來像這樣。奇怪的是我已經有這個事情我summerholdays之前運行(

|-- bin 
|-- lib 
|-- rsc 
| |-- META-INF 
| | `-- persistence.xml 
|-- src 
| |-- org 
| | | ... all sourcecode below 
`-- target 

我試圖縮小問題,所以我刪除整個META-INF文件夾中。不過同樣的錯誤。這不是我所期待的和導致我相信沒有找到persistence.xml 我不知道他們爲什麼把META-INF放到rsc文件夾中(正如我提到的,這不是我的項目),但是當我將它放入根文件夾或在src文件夾中錯誤仍然存​​在。

如何確保已找到persistence.xml?是否有任何需要放置META-INF的文檔(以及爲什麼這個錯誤消息如此誤導?)

回答

1

這取決於您的編譯過程,編譯後的文件/ jar將在啓動測試應用程序時結束。我很確定,你不會從src文件夾開始。你會得到一些構建或測試文件夾來運行你的應用程序。然後將文件夾結構通常應該是這樣的:

|- build 
    |- classes 
     |- org (packages) 
     |- ... 
     |- META-INF 
     |- persistence.xml 
     |- ... (other config files) 

你也可以查看此link

+0

非常感謝,我曾經在我的其他項目中有一個ant目標,所以我不知道persistence.xml需要在某個位置。 (我仍然與錯誤消息爭吵。) – sebastiangeiger 2009-09-10 10:15:21