当前位置: 首页 > 知识库问答 >
问题:

Hibernate可以读取Hibernate.cfg.xml的内容,但仍然给出错误?

姚永年
2023-03-14

我知道这是个老问题,但它真的把我困住了。

我采纳了使用classLoader获取inputsream的建议,代码如下:

 public static Session getSession() {
    if (sessionFactory == null) {
        InputStream xmlInputStream = 
                ResourceUtil.getInputStream(HibernateDBUtil.class, CFG_XML);
        Scanner scanner = new Scanner(xmlInputStream);
        //just a test I can read the xml file ,print content here
        while(scanner.hasNext()) System.out.println(scanner.nextLine());
        scanner.close();
        //reget the stream
        xmlInputStream = 
                ResourceUtil.getInputStream(HibernateDBUtil.class, CFG_XML);
        Configuration cfg = new Configuration();
        cfg.addInputStream(xmlInputStream).configure();
        // version 4.3 's way to config
        StandardServiceRegistryBuilder builder = 
                new StandardServiceRegistryBuilder().applySettings
                (cfg.getProperties());  
        StandardServiceRegistryImpl registry = 
                (StandardServiceRegistryImpl) builder.build();  

        sessionFactory = cfg.buildSessionFactory(registry);  
    }
    return sessionFactory.openSession();
}
private static SessionFactory sessionFactory;
private static final String CFG_XML = "properties/hibernate.cfg.xml"; 

我确认ResourceUtil.GetInputStream工作正常,因为我可以打印hibernate.cfg.xml的内容,但为什么仍然给我错误:

信息:HHH000040:配置资源:/hibernate.cfg.xml线程“main”org.hibernate.hibernate.hibernateexception:/hibernate.cfg.xml中的异常在org.hibernate.internal.util.confighelper.getResourceStream(confighelper.java:173)atorg.hibernate.cfg.Configuration.getConfigurationInputStream(cn.edu.gdut.utils.hibernatedbutil.listBasicElement(hibernatedbutil.java:25)位于cn.edu.gdut.utils.hibernatedbutil.main(hibernatedbutil.java:20)

共有1个答案

元玮
2023-03-14

我认为,文件在IDE中的位置并不重要。所有重要的是文件将在执行期间的位置,在最终的包中。

因此,假设properties/文件夹应该成为已执行bundle的根。这样,由于hibernate.cfg.xml位于properties/中,所以在执行时它应该位于根中。你能用

私有静态最终字符串CFG_XML=“hibernate.cfg.xml”;

Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
 类似资料:
  • 我有一个数据流工作: 从GCS读取包含其他文件名的文本文件 将文件名传递给ReadAllFromParquet以读取。Parquet文件 写入BigQuery 尽管我的工作“成功”了,但它基本上没有经过ReadAllFromParquet步骤的输出集合。我成功地读取了列表中的文件,例如:我还在readallfromparquet之前的步骤中使用记录器确认此列表和文件的GCS路径是正确的。 这就是我

  • 我有一个angular 2应用程序,它使用firebase进行身份验证。我想使用谷歌作为我的身份验证提供者,并有一切设置,以便它应该工作。 如果我尝试用signinWithPopup进行身份验证(如文档中提到的),它可以工作: 但是,如果使用重定向尝试相同的代码,则会出现错误: 有人知道为什么弹出式方法有效而重定向方法无效吗?

  • 这很混乱,因为我的where子句确实使用了主键列。我知道我可以禁用安全模式作为我的脚本的一部分作为一个变通办法,但仍然想要理解为什么我会得到这个错误。如果可能的话,我希望避免不安全的更新。

  • 我希望能够滚动通过整个页面,但没有滚动条显示。 在Google Chrome中是: 但Mozilla Firefox和Internet Explorer似乎不是这样工作的。 我也在CSS中尝试过这个: 这确实隐藏了滚动条,但我不能再滚动了。 有没有一种方法,我可以删除滚动条,同时仍然能够滚动整个页面? 请使用CSS或HTML。

  • 问题内容: 我正在尝试使用以下代码打开FileChooser: 但是它已经在openFile()方法中搞砸了。编译器将引发NullPointerException与以下错误消息: 我们将不胜感激,因为我是JavaFX的新手,还使用了Scene Builder。 问题答案: 这是我在两天内看到的第三个问题,这是由于人们重新初始化由注入的字段而引起的。 关键是您告诉,使用通过解析FXML文件创建的对象

  • 问题内容: 这个问题已经在这里有了答案 : 我的PDO声明无效 (1个答案) 2年前关闭。 谁能解释为什么 返回,而 两者都返回 ,根据文档说明这意味着成功?它是an ,实际上什么都没有插入到数据库中…所以,为什么我会收到来自的成功消息? 如果有帮助,这是代码… 问题答案: 这是因为引用成功执行的最后一条语句。由于返回false,因此它不能引用该语句(不引用任何内容或引用之前的查询)。 至于为什么