Question

J'ai des fichiers * .hbm.xml qui sont placés dans le même dossier dans le fichier hibernate.cfg.xml. Maintenant, je veux mapper d'autres fichiers * .hbm.xml qui se trouvent dans un sous-dossier de ce dossier. Comment pourrais-je le faire? Merci!

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>

Cela fait 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 ma structure de dossiers

${base.configuration.hibernate.dir}
   | hibernate.cfg.xml
   | A.hbm.xml
   |--dir
   |---| B.hbm.xml
${build.classes.main.dir}



[Modifier]

J’ai d’abord essayé et échoué comme Maurice l’a suggéré, modifié 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 ensuite j'ai essayé d’ajouter à mon schemaexpoert comme Mark l’a suggéré. Dans ce cas, il ne retrouverait même pas mon & amp; A.hbm.xml " plus. Émettre l'erreur:

Schema text failed: Could not parse mapping document from resource A.hbm.xml

Ma tâche SchemaExportTask ressemble maintenant à:

        <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 répertoire différent. J'ai été dérouté parce que je changeais deux choses en même temps lors de la phase de test, puis j'ai tout blâmé pour l'innocent "changement de répertoire". Désolé de perdre le temps de tout le monde.

Si quelqu'un est intéressé, voici ce qui s'est passé. J'ai fait une traduction XSLT en utilisant un fichier DTD local et ai spécifié le fichier DTD local avec un chemin relatif dans mon fichier XSL. Mais j’ai mis les fichiers hbm.xml générés dans un répertoire de différences - de ce fait, SchemaExportTask ne peut plus trouver le fichier DTD et n’a pas pu analyser les nouveaux fichiers hbm.xml. Et pour une raison stupide, j’ai pensé 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 écrivaient des messages d’erreur pour une bonne raison! L'ajout de ensemble de fichiers ne fonctionne toujours pas, mais je sais maintenant qu'il faut lire les messages d'erreur ... Je suis sûr que je résoudrai le problème bientôt. =. = ''

Schema text failed: resource: B.hbm.xml not found
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml
Était-ce utile?

La solution

Pour l’usage général d’Hibernate, je suis d’accord avec le changement suggéré par Maurice, mais je pensais donner davantage d’explications. Les fichiers de mappage Hibernate sont chargés en tant que ressources du chemin de classe. Comme vous avez $ {base.configuration.hibernate.dir} sur votre chemin de classe, vous devez donner le chemin du fichier de mappage par rapport à celui-ci, par conséquent le front / devrait être supprimé.

Pour utiliser l'outil d'exportation de schéma à partir de docs indique que vous devez définir les fichiers de mappage en tant qu'ensemble de fichiers plutôt que de vous attendre à les trouver sur le chemin d'accès aux classes. Voir

Autres conseils

<mapping resource="dir/B.hbm.xml"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top