我需要测试一些东西在一个项目,该项目已经由其他人,但是新的给我。他们使用的休眠作为访问用户的执行。

我得到了一个虚拟机在这一切都设置,但是当我想要开始任何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 是找不到的。我不知道为什么他们把元INF在rsc文件夹(正如我所提到的,这不是我的项目)但是,当我把它放在根文件或来源的文件夹中的错误仍然存在。

我怎能确保persistence.xml 已经发现了什么?是否有任何文件META-INF应放置。(为什么是这个错误消息所以误导的?)

有帮助吗?

解决方案

这取决于你的建立过程编制文件/罐子将结束,当开始测试的应用程序。我敢肯定,你不会开始从src文件夹。你会得到一些建立或测试文件夹以运行的应用程序。然后夹结构通常应该是这样的:

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

你也可以检查这个 链接.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top