2009-09-09 41 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