Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何测试是否找到persistence.xml?_Hibernate_Jpa_Persistence - Fatal编程技术网

Hibernate 如何测试是否找到persistence.xml?

Hibernate 如何测试是否找到persistence.xml?,hibernate,jpa,persistence,Hibernate,Jpa,Persistence,我必须在别人开发的项目上测试一些东西,但对我来说是新的。 他们使用Hibernate作为JPA实现 我有一个虚拟机,所有的东西都设置好了,但是当我想启动任何测试客户机时(小控制台程序,没有单元测试)。我总是犯同样的错误 Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.HibernateException: Hibernate Dialect must be explicitly se

我必须在别人开发的项目上测试一些东西,但对我来说是新的。 他们使用Hibernate作为JPA实现

我有一个虚拟机,所有的东西都设置好了,但是当我想启动任何测试客户机时(小控制台程序,没有单元测试)。我总是犯同样的错误

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
项目结构如下所示。奇怪的是,我已经有了这个东西(在我的暑假前)

|-- 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的位置。(为什么这个错误消息会误导人?)

这取决于启动测试应用程序时编译文件/jar的生成过程。我很确定,您不会从src文件夹开始。您将获得一些生成或测试文件夹来运行应用程序。然后文件夹结构通常应如下所示:

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

您也可以对此进行检查。

这取决于启动测试应用程序时编译文件/jar的生成过程。我很确定,您不会从src文件夹开始。您将获得一些生成或测试文件夹来运行应用程序。然后,文件夹结构通常应如下所示:

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

您也可以检查一下。

非常感谢,我以前在其他项目中有一个ant目标,因此我不再意识到persistence.xml需要位于某个位置(我仍然不同意错误消息)非常感谢,在我的其他项目中,我曾经有一个ant目标,因此我不再意识到persistence.xml需要位于某个位置(我仍然不同意errormessage)