【问题标题】:How can I test wether persistence.xml has been found or not?如何测试是否找到了 persistence.xml?
【发布时间】:2009-09-09 14:32:43
【问题描述】:

我必须在其他人开发的项目上测试一些东西,但对我来说是新的。 他们使用 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。 (为什么这个错误信息如此具有误导性?)

【问题讨论】:

    标签: hibernate jpa persistence


    【解决方案1】:

    这取决于您的构建过程,当您启动测试应用程序时,编译的文件/jar 将在哪里结束。我很确定,你不会从 src-folder 开始。您将获得一些构建或测试文件夹来运行您的应用程序。那么文件夹结构通常应该是这样的:

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

    您也可以查看link

    【讨论】:

    • 非常感谢,我曾经在我的其他项目中有一个 ant 目标,所以我不再知道persistence.xml 需要在某个位置。 (而且我仍然与错误消息争吵。)
    猜你喜欢
    • 2015-06-21
    • 2010-09-09
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2021-01-04
    相关资源
    最近更新 更多