-->
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.  [ 1 post ] 
Author Message
 Post subject: Schema Export Create some tables but not Others
PostPosted: Thu Sep 02, 2004 1:02 am 
Newbie

Joined: Thu Sep 02, 2004 12:53 am
Posts: 5
My build.xml file creates a table, however it would only create the table that the hibernate-2.1 folder provides.

Here is my build.xml file:

<?xml version="1.0"?>
<project name="test" default="db" basedir=".">
<!-- Set up properties containing important project directories -->
<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/>
<property name="data.dir" value="data"/>

<!-- Set up the class path for compilation and execution -->
<path id="project.class.path">
<!-- Include our own classes, of course -->
<pathelement location="${class.root}" />
<!-- Include jars in the project library directory -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>

<target name="db" description="Runs HSQLDB database management UI
against the database file--use when application is not running">
<java classname="org.hsqldb.util.DatabaseManager"
fork="yes">
<classpath refid="project.class.path"/>
<arg value="-driver"/>
<arg value="org.gjt.mm.mysql.Driver"/>
<arg value="-url"/>
<arg value="jdbc:mysql:${data.dir}/music"/>
<arg value="-user"/>
<arg value="sa"/>
</java>
</target>

<target name="codegen"
description="Generate Java source from the O/R mapping files">
<taskdef name="hbm2java"
classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
classpathref="project.class.path"/>
<hbm2java output="${source.root}">
<fileset dir="${source.root}">
<include name="**/*.hbm.xml"/>
</fileset>
</hbm2java>
</target>

<!-- Create our runtime subdirectories and copy resources into them -->
<target name="prepare" description="Sets up build structures">
<mkdir dir="${class.root}"/>

<!-- Copy our property files and O/R mappings for use at runtime -->
<copy todir="${class.root}" >
<fileset dir="${source.root}" >
<include name="**/*.properties"/>
<include name="**/*.hbm.xml"/>
</fileset>
</copy>
</target>

<!-- Compile the java source of the project -->
<target name="compile" depends="prepare"
description="Compiles all Java classes">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="project.class.path"/>
</javac>
</target>

<target name="schema" depends="compile"
description="Generate DB schema from the O/R mapping files">
<!-- Teach Ant how to use Hibernate's schema generation tool -->
<taskdef name="schemaexport"
classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask"
classpathref="project.class.path"/>

<schemaexport properties="${class.root}/hibernate.properties"
quiet="no" text="no" drop="no" delimiter=";">
<fileset dir="${class.root}">
<include name="**/*.hbm.xml"/>
</fileset>
</schemaexport>
</target>



</project>



In the src folder that is provided to us in the hibernate-2.1 folder, in net.sf.hibernate.odmg there is a Name.java class and a Name.hbm.xml file . Here are those 2 files:

//$Id: Name.java,v 1.3.2.1 2003/08/09 11:24:47 turin42 Exp $
package net.sf.hibernate.odmg;
import java.io.Serializable;

/**
* An ODMG name that may be bound to a persistent object.
*/
public class Name {
private String name;
private Class persistentClass;
private Serializable id;
public Name(String name, Class persistentClass, Serializable id) {
this.name = name;
this.persistentClass = persistentClass;
this.id = id;
}
public Name() {}
/**
* Returns the name. JavaDoc requires a second sentence.
* @return String
*/
public String getName() {
return name;
}

/**
* Returns the persistentClass. JavaDoc requires a second sentence.
* @return Class
*/
public Class getPersistentClass() {
return persistentClass;
}
/**
* Sets the name. JavaDoc requires a second sentence.
* @param name The name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* Sets the persistentClass. JavaDoc requires a second sentence.
* @param persistentClass The persistentClass to set
*/
public void setPersistentClass(Class persistentClass) {
this.persistentClass = persistentClass;
}
/**
* Returns the id. JavaDoc requires a second sentence.
* @return Serializable
*/
public Serializable getId() {
return id;
}
/**
* Sets the id. JavaDoc requires a second sentence.
* @param id The id to set
*/
public void setId(Serializable id) {
this.id = id;
}
}





Here's Name.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>

<!-- A default mapping for the ODMG Name class. Applications
may specify their own mappings instead. -->

<class name="net.sf.hibernate.odmg.Name">
<id name="name" type="string">
<generator class="assigned"/>
</id>
<property name="persistentClass" type="class" not-null="true"/>
<property name="id" type="serializable" not-null="true"/>
</class>
<query name="byName">from n in class net.sf.hibernate.odmg.Name where n.name = ?</query>
</hibernate-mapping>


Now in the hibernate-2.1 folder I created my own foler called practice9. I copied and pasted the src folder given to us.

Now it creates the Name table in my database which is good.

However when I create my own .java and hbm.xml files it won't work. Why is that? When I type ant schema in the command line I get the error that the persistent class is not found. So if I had a COllection.hbm.xml file and a Collection.java file it would say 'persistent class Collection not found'.

Also, about my build files, my database is MySQL 4.0. So I was wondering if this part of my build.xml file was right:

<target name="db" description="Runs HSQLDB database management UI
against the database file--use when application is not running">
<java classname="org.hsqldb.util.DatabaseManager"
fork="yes">
<classpath refid="project.class.path"/>
<arg value="-driver"/>
<arg value="org.gjt.mm.mysql.Driver"/>
<arg value="-url"/>
<arg value="jdbc:mysql:${data.dir}/music"/>
<arg value="-user"/>
<arg value="sa"/>
</java>
</target>


Thx for all the help!
Calc


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

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.