J'ai quelques fichiers *.hbm.xml qui sont placés dans le même dossier que le fichier hibernate.cfg.xml. Maintenant, je veux mapper d'autres fichiers *.hbm.xml qui sont dans un sous-dossier de ce dossier. Comment puis-je le faire ? Je vous remercie.
voici une partie de mon hibernate.cfg.xml
:
<hibernate-configuration>
<session-factory name="MySessionFactory">
<!-- some hibernate properties here -->
<!--This below works fine-->
<mapping resource="A.hbm.xml"/>
<!--This doesn't-->
<mapping resource="/dir/B.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Il s'agit d'une partie de mon fichier Ant :
<target name="generateHibernateSql">
<taskdef name="SchemaExportTask"
classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
>
<classpath>
<pathelement location="${build.classes.main.dir}"/>
<pathelement location="${base.configuration.hibernate.dir}"/>
<path refid="build.classpath.lib"/>
</classpath>
</taskdef>
Voici la structure de mon dossier
${base.configuration.hibernate.dir}
| hibernate.cfg.xml
| A.hbm.xml
|--dir
|---| B.hbm.xml
${build.classes.main.dir}
[Editer]
J'ai d'abord essayé, sans succès, comme le suggérait Maurice, de changer la ligne en
<mapping resource="dir/B.hbm.xml"/>
donne toujours la même erreur :
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml
et j'ai ensuite essayé d'ajouter dans mon schemaexpoert comme Mark l'a suggéré. Il n'a alors même plus trouvé mon "A.hbm.xml". Il a affiché l'erreur :
Schema text failed: Could not parse mapping document from resource A.hbm.xml
Ma SchemaExportTask se présente désormais comme suit :
<SchemaExportTask
config="${base.configuration.hibernate.dir}\hibernate.cfg.xml"
quiet="no"
text="no"
drop="no"
delimiter=";"
create="yes"
output="${dist.database.dir}\schema-export.sql"
>
<fileset dir="${base.configuration.hibernate.dir}">
<include name="**/*.hbm.xml"/>
</fileset>
</SchemaExportTask>
[Résolu]
La conclusion est que j'étais vraiment stupide. Cela n'avait rien à voir avec le fait d'être dans un autre répertoire. Je me suis embrouillé parce que je changeais deux choses à la fois pendant la phase de test et j'ai tout mis sur le dos de l'innocent "changement de répertoire". Désolé d'avoir fait perdre du temps à tout le monde.
Si cela intéresse quelqu'un, voici ce qui s'est passé. J'ai effectué une traduction XSLT en utilisant un fichier DTD local, et j'ai spécifié le fichier DTD local avec un chemin relatif dans mon fichier XSL. Mais j'ai placé les fichiers hbm.xml générés dans un répertoire différent -- SchemaExportTask ne peut donc plus trouver le fichier DTD et ne parvient pas à analyser les nouveaux fichiers hbm.xml. Et pour une raison stupide, je pensais que les messages d'erreur suivants, complètement différents, signifiaient la même chose.... Merci beaucoup à Mark de m'avoir rappelé que les gens ont écrit des messages d'erreur pour une bonne raison ! Ajout fileset
ne fonctionne toujours pas, mais je sais maintenant qu'il faut lire les messages d'erreur...je suis sûr que je vais bientôt y arriver. =.=''
Schema text failed: resource: B.hbm.xml not found
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml