1

Hibernate.cfg.xml dosyasında aynı klasöre yerleştirilmiş * .hbm.xml dosyalarım var. Şimdi, bu klasörün bir alt klasöründe bulunan bazı * .hbm.xml dosyalarını eşlemek istiyorum. Bunu nasıl yapabilirim? Teşekkürler!Hazırda bekletme: * .hbm.xml dosyasını farklı bir klasörde nasıl eşlenir?

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

Bu benim Ant dosyasının bir parçasıdır::

burada hibernate.cfg.xml parçası

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

burada benim klasör yapısı

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



[Düzenle]

İlk denenmiş ve Maurice önerildiği gibi başarısız olmuş

,

hattı değiştirildi
<mapping resource="dir/B.hbm.xml"/> 

hala aynı hatayı veriyor:

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

ve sonra denemek için gitti Mark önerdiğim gibi schemaexpoert'e ekleniyor. O zaman artık "A.hbm.xml" yi bile bulamazdım. hatayı kapalı verilmesi:

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

Benim SchemaExportTask şimdi benziyor:

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



[Çözülmüş]

sonuca Ben gerçekten aptal olmasıdır. Farklı bir dizinde bulunmakla ilgisi yoktu. Şaşkınım çünkü bir kerede test aşamasında iki şeyi değiştiriyordum ve sonra hepsini masum "dizin değişikliği" nden sorumlu tuttum. Herkesin zamanını boşa harcadığım için üzgünüm.

Birisi ilgilenirse, burada olan şey buydu. Yerel bir DTD dosyası kullanarak bazı XSLT çevirileri yaptım ve XSL dosyamda göreli bir yolla yerel DTD dosyasını belirledim. Ama oluşturulan hbm.xml dosyalarını bir fark dizinine koydum - bundan dolayı SchemaExportTask artık DTD dosyasını bulamıyor ve yeni hbm.xml dosyalarını ayrıştıramadı. Ve aptalca bir nedenden dolayı, aşağıdaki tamamen farklı hata mesajlarının aynı şeyi ifade ettiğini düşündüm .... İnsanlara, iyi bir nedenden dolayı hata mesajları yazdığını hatırlattığınız için çok teşekkürler. fileset'u eklemek hala çalışmıyor, ancak şimdi hata ölçümlerini okuduğumu biliyorum ... Eminim yakında tamir edeceğim. =. = '' Ben Maurice önerdi ama ben bir açıklama daha fazla vermek düşündük değişimiyle eşit genel hazırda kullanım için

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

Aldığınız bir hata iletisi ekleyebilir misiniz? – Mark

cevap

3

. Hazırda bekleme eşleme dosyaları, sınıf yolundan kaynak olarak yüklenir. Sınıf yolunuza $ {base.configuration.hibernate.dir} sahip olduğunuzdan, haritalama dosyasının yolunu buna göre vermelisiniz, bu nedenle ön/kaldırılmalıdır.

Şema verme aracını docs karesinden kullanmak için, eşleme dosyalarını sınıf yolunda bulunmasını beklemek yerine bir dosya grubu olarak tanımlamanız gerektiğini belirtin. Bkz.

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

bunu denedi ... ne yazık ki hala çalışmıyor ... – tomato

İlgili konular