7

我正在编写一个 Web 应用程序,我必须添加休眠。我配置了 maven (pom.xml) 等,但现在我收到以下错误:

exception
javax.servlet.ServletException: org.hibernate.HibernateException: /hibernate.cfg.xml not found

我正在使用 NetBeans。我尝试将此文件移动到 WEB-INF、根项目文件夹、src 目录(默认包),但它仍然无法正常工作。我能怎么做?我不想像这样以编程方式设置此文件的路径:

Configuration cfg = new Configuration();
cfg.addResource("/some/path/to/this/file/Hibernate.cfg.xml");
4

4 回答 4

7

我总是把它放到WEB-INF/classes目录中(编译的文件存储在那里)。

于 2013-01-03T16:11:00.247 回答
3

您需要将 hibernate.cfg.xml 添加到类路径中的文件夹中。在 webb 应用程序中,WEB-INF/classes 默认位于类路径中。您可以使用该文件夹或为您的资源创建一个新文件夹(假设您希望将它们分开),然后通过调整项目设置在类路径中设置新文件夹。

于 2013-01-03T16:18:22.183 回答
1

您可以使用带有 hibernateConfig File 参数的 configure(File configFile) 方法从不同的目录(不一定是类路径)加载 hibernate.cfg.xml。(注意,我使用的是休眠 4.3.7)

优点是,您可以将 hibernate 配置文件放在您必须有权访问的单独目录中(出于维护或更改目的),而不是将其与您可能无权访问的 .war 文件捆绑在一起。

示例如下:


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml";
File hibernatePropsFile = new File(hibernatePropsFilePath);

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile);

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

于 2014-12-27T10:22:15.200 回答
0

该文件必须位于应用程序类路径的根目录中。那是在 WEB-INF/classes 下

于 2015-03-23T07:34:01.847 回答