Discussion:
Hibernate mapping resource path in Maven
Andy Buckley
2006-10-30 13:07:47 UTC
Permalink
Hi,

I just started converting a Java project using Hibernate (www.hibernate.org) to
build with Maven rather than Ant. While I was able to get log4j logging working
again by placing my log4j.properties file in src/main/resources, and putting
hibernate.cfg.xml in the same place does result in it getting picked up by
Hibernate at runtime, I can't seem to get the mapping resource entries correct.

My directory structure is now

src/main
\ resources
| \ hibernate.cfg.xml
|
\ java/cedar/hepdata/model
\ Author.hbm.xml
\ Axis.hbm.xml
\ etc.

and in hibernate.cfg.xml, I've got mapping entries like this:

<mapping resource="src/main/java/cedar/hepdata/model/Author.hbm.xml"/>

which result in errors like

Running cedar.hepdata.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.109 sec
Running cedar.hepdata.test.HDOMTest
Initial SessionFactory creation failed: org.hibernate.MappingNotFoundException:
resource: src/main/java/cedar/hepdata/model/Author.hbm.xml not found

I've also tried resource="/src/...", resource="../src/..." and a bunch of
others (even absolute paths, which are useless from a portability point of
view) and none seem to work. Any suggestions? I suspect that the
hibernate.cfg.xml file is getting copied into the target/{,test-}classes
directories and the *.hbm.xml files aren't: should the *.hbm.xml files also be
located in src/main/resources/ to make this work?

Please help!

Andy


PS. Sorry if this is a recurring question: The only mention on the mailing list
archives that I've seen about getting Hibernate working was using mappings like
<mapping class="cedar.hepdata.model.Author" />
but these seem to require Hibernate Annotations and I'm not (yet) using them.
The Hibernate doc/FAQ pages aren't much help either, since they only seem to be
referring to Maven 1.x.
--
Andy Buckley: CEDAR @ IPPP, Durham
Work: www.cedar.ac.uk
www.insectnation.org
Marco Mistroni
2006-10-30 13:56:39 UTC
Permalink
Hello,
yes you should make sure that your hibernate files end up in the resources
directory of your src/java

after that there isno need to put absolute path for your classes, you can
just puit

cedar/hepdata/Author.hbm.xml

and that should work..

hth
marco
Post by Andy Buckley
Hi,
I just started converting a Java project using Hibernate (
www.hibernate.org) to
build with Maven rather than Ant. While I was able to get log4j logging working
again by placing my log4j.properties file in src/main/resources, and putting
hibernate.cfg.xml in the same place does result in it getting picked up by
Hibernate at runtime, I can't seem to get the mapping resource entries correct.
My directory structure is now
src/main
\ resources
| \ hibernate.cfg.xml
|
\ java/cedar/hepdata/model
\ Author.hbm.xml
\ Axis.hbm.xml
\ etc.
<mapping resource="src/main/java/cedar/hepdata/model/Author.hbm.xml"/>
which result in errors like
Running cedar.hepdata.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.109 sec
Running cedar.hepdata.test.HDOMTest
resource: src/main/java/cedar/hepdata/model/Author.hbm.xml not found
I've also tried resource="/src/...", resource="../src/..." and a bunch of
others (even absolute paths, which are useless from a portability point of
view) and none seem to work. Any suggestions? I suspect that the
hibernate.cfg.xml file is getting copied into the target/{,test-}classes
directories and the *.hbm.xml files aren't: should the *.hbm.xml files also be
located in src/main/resources/ to make this work?
Please help!
Andy
PS. Sorry if this is a recurring question: The only mention on the mailing list
archives that I've seen about getting Hibernate working was using mappings like
<mapping class="cedar.hepdata.model.Author" />
but these seem to require Hibernate Annotations and I'm not (yet) using them.
The Hibernate doc/FAQ pages aren't much help either, since they only seem to be
referring to Maven 1.x.
--
Work: www.cedar.ac.uk
www.insectnation.org
---------------------------------------------------------------------
Aleksei Valikov
2006-10-30 14:03:17 UTC
Permalink
Hi.
Post by Andy Buckley
I just started converting a Java project using Hibernate (www.hibernate.org) to
build with Maven rather than Ant. While I was able to get log4j logging working
again by placing my log4j.properties file in src/main/resources, and putting
hibernate.cfg.xml in the same place does result in it getting picked up by
Hibernate at runtime, I can't seem to get the mapping resource entries correct.
My directory structure is now
src/main
\ resources
| \ hibernate.cfg.xml
|
\ java/cedar/hepdata/model
\ Author.hbm.xml
\ Axis.hbm.xml
\ etc.
1. Put your HBM files into resources, not into java. You should have
src/main/resource/cedar/hepdata/mode/Autor.hbm.xml etc.

2. Use

<mapping resource="cedar/hepdata/model/Author.hbm.xml"/>

Bye.
/lexi
Andy Buckley
2006-10-30 14:46:53 UTC
Permalink
Post by Aleksei Valikov
1. Put your HBM files into resources, not into java. You should have
src/main/resource/cedar/hepdata/mode/Autor.hbm.xml etc.
2. Use
<mapping resource="cedar/hepdata/model/Author.hbm.xml"/>
Fantastic, thanks. The whole tree seems not to be needed, so just making e.g.
src/main/resource/hbm/Author.hbm.xml and pointing the config file at those
seems to work nicely, without having a chain of empty directories for no
particular reason.

Thank you!
Andy
--
Andy Buckley: CEDAR @ IPPP, Durham
Work: www.cedar.ac.uk
www.insectnation.org
Loading...