【问题标题】:hibernate Annotation Config not finding my xml file休眠注释配置找不到我的 xml 文件
【发布时间】:2011-04-04 15:58:40
【问题描述】:

我有一些使用休眠的继承代码。我收到以下错误:

Caused by: org.hibernate.HibernateException: C:\dev\wk\rs.110-AQU-120.cca.cca-ui\main\config\hibernate\DEV\master.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1402)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1424)
    at com.cca.persistence.HibernateUtil$Parameters.<init>(HibernateUtil.java:96)
    at com.cca.persistence.HibernateUtil.<clinit>(HibernateUtil.java:137)
    ... 4 more

调用 AnnotationConfiguration()#configure(String configurationFile);
时会出现这种情况 但该文件确实存在。为什么hibernate会找不到呢?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    资源的路径不能是绝对路径 (C:\dev\wk\rs.110-AQU-120.cca...),它必须是应用程序中的相对路径,如包名!

    原因是org.hibernate.util.ConfigHelper.getResourceAsStream通过ClassLoader.getResourceAsStream(&lt;resourceName&gt;)加载资源。

    更多详情,请查看ClassLoader.getResourceAsStreamClassLoader.getResource

    【讨论】:

    • 我没有意识到必须在类路径中设置目录。
    【解决方案2】:

    如果您想在自定义位置配置文件,可以将AnnotationConfiguration 转换为Configuration,并提供File 作为参数,例如:

    ((Configuration) cfg).configure(new File(System.getProperty("user.dir") + "/config/hibernate.cfg.xml"));
    

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 2020-11-18
      • 2013-12-11
      • 2016-05-06
      • 2010-12-26
      • 2017-07-09
      • 2012-04-11
      • 1970-01-01
      相关资源
      最近更新 更多