我可以在休眠中使用相对路径指示映射文件吗?

时间:2013-04-15 10:27:35

标签: java hibernate orm mapping

我正在使用hibernate开发一个独立的应用程序,使用以下结构为我的项目: enter image description here

这就是我告诉hibernate的方式(是的,我正在和Hibernate聊天)在哪里找到hibernate.cfg.xml文件:

File hibernateConfigurationFile = new File("..\\resources\\hibernate.cfg.xml");
...
Configuration().configure(hibernateConfigurationFile).buildSessionFactory();

这就是我告诉hibernate在哪里找到Event.hbm.xml文件:

<mapping resource="../resources/test/Event.hbm.xml"/>

我也尝试过:

<mapping resource="test/Event.hbm.xml"/>

但是当我编译它时,我有以下错误:

  

初始SessionFactory创建failed.org.hibernate.MappingNotFoundException:resource:test / Event.hbm.xml not found

我理解这是因为我在hibernate.cfg.xml文件中指出了错误的映射文件路径。所以我移动了我的Event.hbm.xml文件,现在项目的结构是:enter image description here

一切正常。

我的问题是我想将Event.hbm.xml保存在resource \ test目录中。如何在我的hibernate.cfg.xml文件中指明?我尝试了相对路径,但它不起作用。我读了hibernate文档,但一无所获。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试programmatic way of building hibernate configuration并可以说

SessionFactory sf = new Configuration()
    .addFile("yourpath/Event.hbm.xml")

而不是在hibernate.cfg.xml

中声明地图资源

请参阅this method

答案 1 :(得分:0)

我遇到了同样的问题

我用过这个

<mapping file=".\hibernate\groupResult.hbm.xml" />

表示映射

中有属性文件
  

\冬眠\ groupResult.hbm.xml

将位于该groupResult.hbm.xml

中该hibernate文件夹的项目文件夹中

希望这会对你有帮助!

干杯!