سؤال

ولدي بعض الملفات .hbm.xml * التي يتم وضعها في نفس المجلد في ملف hibernate.cfg.xml. الآن، أريد أن تعيين بعض الملفات .hbm.xml * الأخرى التي هي في مجلد فرعي من هذا المجلد. كيف يمكن أن أفعل ذلك؟ شكرا!

وهنا جزء من بلدي 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>

وهذا جزء من ملفي النمل:

        <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>

وهنا قال لي بنية المجلد

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

و

[تحرير]

ولقد حاولت في البداية وفشلت كما اقترح موريس، وتغيير الخط ل

 <mapping resource="dir/B.hbm.xml"/>

لا يزال يعطي نفس الخطأ:

Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml

وبعد ذلك ذهبت إلى محاولة إضافة إلى بلدي schemaexpoert كما اقترح كافة. ومن ثم لن تجد حتى بلادي "A.hbm.xml" بعد الآن. إعطاء قبالة الخطأ:

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

وبلدي SchemaExportTask تبدو الآن مثل:

        <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>

و

[حل]

والاستنتاج هو أن كنت فقط حقا غبية. كان عليه أن ما يجري في دليل مختلف شيئا. حصلت في حيرة لأنني كنت تغيير شيئين في وقت واحد مرحلة الاختبار وبعد ذلك اللوم كله على "تغيير الدليل" الأبرياء. آسف لإضاعة وقت الجميع.

إذا كان أي شخص مهتم، وهنا ما حدث. فعلت بعض الترجمة XSLT باستخدام ملف DTD المحلي، وتحديد ملف DTD المحلي مع مسار نسبي في ملف XSL بلدي. ولكنني وضعت الملفات التي تم إنشاؤها hbm.xml إلى دليل الفرق - وبالتالي SchemaExportTask لا يمكن العثور على ملف DTD بعد الآن، وفشلت في تحليل الملفات hbm.xml جديدة. ولسبب غبي، وأعتقد أن رسائل خطأ مختلفة تماما التالية تعني نفس الشيء .... شكرا جزيلا لمارك لتذكير لي أن الناس كتب رسائل الخطأ لسبب وجيه! مضيفا fileset لا يزال لا يعمل الآن، لكنني الآن أعرف لقراءة meassages خطأ ... أنا متأكد من أني سوف إصلاحه قريبا. =. = ''

Schema text failed: resource: B.hbm.xml not found
Schema text failed: Could not parse mapping document from resource dir/B.hbm.xml
هل كانت مفيدة؟

المحلول

لاستخدام السبات العام وأنا أتفق مع التغيير المقترح موريس ولكن أعتقد أنني سوف تعطي أكثر من تفسير. يتم تحميل السبات ملفات التعيين كموارد من CLASSPATH. لديك $ {base.configuration.hibernate.dir} على CLASSPATH الخاص بك يجب أن تعطي مسار ملف التعيين بالنسبة لهذا بالتالي الجبهة / ينبغي إزالتها.

لاستخدام أداة تصدير المخطط من النمل في مستندات القول أنه يجب عليك تحديد ملفات التعيين كما من مجموعة الملفات بدلا من نتوقع منهم أن يتم العثور على CLASSPATH. انظر

نصائح أخرى

<mapping resource="dir/B.hbm.xml"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top