-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Ant: xdoclet: bestehendes hibernate.cfg.xml einbinden?
PostPosted: Wed Nov 30, 2005 6:33 am 
Newbie

Joined: Mon Nov 28, 2005 12:07 pm
Posts: 17
Hibernate version:
3.1rc3
xdoclet-hibernate-module-1.2.3.jar

Ich verwende Ant um mir die hbm Files dank Annotations automatisch generieren zu lassen.
http://xdoclet.sourceforge.net/xdoclet/ ... tTask.html
Exemplarisch mal das Target:
Code:
   <target name="generate.hbm"
      description="Generates Hibernate class descriptor files."
      depends="compile.data">

      <taskdef name="hibernatedoclet"
         classname="xdoclet.modules.hibernate.HibernateDocletTask"
         classpathref="classpath">
      </taskdef>   
      <mkdir dir="build/gen-src.data" />   

      <hibernatedoclet destdir="build/gen-src.data"
         excludedtags="@version,@author,@todo" force="true" verbose="true">
         <fileset dir="src/data">
         <include name="**/*/*.java" />
         </fileset>
         <hibernate version="3.0" />
         <jbossservice jndiName="DataService"
         serviceName="DataService" autoCreate="update" />
         </hibernatedoclet>
   </target>

Nun versteh ich die XDoclet Doku nicht ganz: wie kann ich ein bestehendes hibernate.cfg.xml einbinden? Es geht naemlich darum, dass es schon gemappte Klassen gibt, die ich in den neuen Objekten referenzieren (=foreign key) moechte.

Kleine Offtopic Frage: offiziell von Hibernate gibts ja die "hibernate-tools". Das jar enthaelt ja nun auch Ant-Tasks: http://www.hibernate.org/hib_docs/tools/ant/
Kann das mir auch die hbm erzeugen? Die Doku find ich nicht sonderlich toll: ein erster Versuch <hbm2hbmxml> zu nutzen ist gescheitert (org.xml.sax.SAXParseException: Content is not allowed in prolog.) - werden vielleicht andere Annotations im Vergleich zu XDoclet verwenden (das waere ja doof)? <hbm2ddl> entspricht wohl dem <schemaexport>, soweit kam ich aber noch nicht :(

Offtopic2:
Gibts hbm->uml oder aehnliches? Das heisst ich moechte eine kleine 'Beziehungsgraphik' von dem Datenmodell haben - jpg, png oder aehnliches.


Top
 Profile  
 
 Post subject: org.hibernate.MappingException: duplicate import
PostPosted: Wed Nov 30, 2005 7:29 am 
Newbie

Joined: Mon Nov 28, 2005 12:07 pm
Posts: 17
hm, bin einen Schritt weiter gekommen - der Fehler ist ja erst beim Schemaexportieren aufgetaucht - und das ist ja kein XDoclet Task! Von daher ist die Ueberschrift auch nicht ganz richtig.
Verwende das "hibernate-tools.jar" aus "HibernateTools-3.1.0.beta1.zip"
Hier der Task:
Code:
   <target name="schemaexport"
      description="Exports all hbm.xml files">
      <taskdef name="schemaexport"
         classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
         classpathref="classpath">
      </taskdef>
      <mkdir dir="build/gen-files.data" />
      <schemaexport properties="resources/db/hibernate.properties"
         quiet="no" text="no" drop="no"
         output="build/gen-files.data/schema-export.sql"
         config="hibernate.cfg.xml">
         <fileset dir="build/gen-src.data">
            <include name="**/*.hbm.xml" />
         </fileset>
      </schemaexport>
   </target>

Hier konnt ich das Problem auch loesen und die bestehenden Mappings einbinden (mittels dem Attribut: config="hibernate.cfg.xml").
    [schemaexport] (cfg.Configuration 223 ) Mapping file: D:\workspace\Core\build\gen-src.data\de\test\Comment.hbm.xml
    [schemaexport] (cfg.Configuration 365 ) Could not compile the mapping document
    [schemaexport] org.hibernate.MappingException: duplicate import: Comment
    [schemaexport] at org.hibernate.cfg.Mappings.addImport(Mappings.java:105)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindPersistentClassCommonValues(HbmBinder.java:543)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindClass(HbmBinder.java:488)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:234)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:152)
    [schemaexport] at org.hibernate.cfg.Configuration.add(Configuration.java:362)
    [schemaexport] at org.hibernate.cfg.Configuration.addFile(Configuration.java:228)
    [schemaexport] at org.hibernate.tool.hbm2ddl.SchemaExportTask.getConfiguration(SchemaExportTask.java:195)
    [schemaexport] at org.hibernate.tool.hbm2ddl.SchemaExportTask.execute(SchemaExportTask.java:135)
    [schemaexport] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    .
    .
    .
    [schemaexport] (cfg.Configuration 232 ) Could not configure datastore from file: D:\workspace\Core\build\gen-src.data\de\test\Comment.hbm.xml
    [schemaexport] org.hibernate.MappingException: duplicate import: Comment
    [schemaexport] at org.hibernate.cfg.Mappings.addImport(Mappings.java:105)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindPersistentClassCommonValues(HbmBinder.java:543)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindClass(HbmBinder.java:488)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:234)
    [schemaexport] at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:152)
    [schemaexport] at org.hibernate.cfg.Configuration.add(Configuration.java:362)
    [schemaexport] at org.hibernate.cfg.Configuration.addFile(Configuration.java:228)
    [schemaexport] at org.hibernate.tool.hbm2ddl.SchemaExportTask.getConfiguration(SchemaExportTask.java:195)
    [schemaexport] at org.hibernate.tool.hbm2ddl.SchemaExportTask.execute(SchemaExportTask.java:135)
    [schemaexport] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    [schemaexport] at org.apache.tools.ant.Task.perform(Task.java:364)
    .
    .
    .
    BUILD FAILED
    D:\workspace\Core\build-data.xml:76: Schema text failed: Could not configure datastore from file: D:\workspace\Core\build\gen-src.data\de\test\Comment.hbm.xml

Also 'duplicated' ist da nix

Koennte vielleicht was hiermit zu tun haben: http://opensource2.atlassian.com/projec ... se/HBX-257
Weiss jemand weiter?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 30, 2005 9:04 am 
Newbie

Joined: Mon Nov 28, 2005 12:07 pm
Posts: 17
Problem geloest! Naechstes Problem :)

Fuer diejenigen die es interessiert: auto-update muss auf false gesetzt werden (warum auch immer).
HowTo:
1. Annotation zur Klasse hinzufuegen
@hibernate.mapping auto-import="false"
2. Doclet fuegt das gewuenschte Attribut zum *.hbm.xml File: <hibernate-mapping auto-import="false">
3. Schemaexport generiert nun den Sack an SQL Statements

Neues Problem: der Sack will nicht!
Die erste Zeile in der generierten SQL Datei besagt:
    alter table ADET_COMMENT drop constraint FKEF1B8312C2DC8926

Nur die Tabelle existiert ja noch gar nicht! Denmach kommt auch ein Fehler wenn ich das SQL Skript mit dem HSQL Dateimanager ausfuehren moechte. Dabei hab ich im hibernate.cfg.xml <property name="hibernate.hbm2ddl.auto">update</property> stehen! Reicht das nicht? Ich habe die Vermutung dass die Hibernate Konfiguration in meinem JBoss AS 4.0.3RC1 irgendwie mir einen Strich durch die Rechnung zieht. Oder die Schemagenerierung mit dem Ant-Task produziert kacke?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.