请大家直接看代码吧.天太热了...
环境是eclipse ganymede , jdk 6.0, hibernate 3.2, xdoclet1.2.3,ant 1.6.5,mysql5.0
通过Car 和 Owner的关系可以看出1个Owner可以有0..*个Car
import java.io.Serializable;
/**
* @hibernate.class table="car"
* @author Charles King
*
*/
public class Car implements Serializable{
private Integer carId;
private String carName;
/**
* @hibernate.id generator-class = "native" column="car_id"
* @return
*/
public Integer getCarId() {
return carId;
}
public void setCarId(Integer carId) {
this.carId = carId;
}
/**
* @hibernate.property column="car_name"
* @return
*/
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
}
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
/**
* @hibernate.class table = "owner"
* @author Charles King
*
*/
public class Owner implements Serializable {
private Integer ownerId;
private String ownerName;
private Set cars = new HashSet();
/**
* @hibernate.id generator-class = "native" column = "owner_id"
* @return
*/
public Integer getOwnerId() {
return ownerId;
}
public void setOwnerId(Integer ownerId) {
this.ownerId = ownerId;
}
/**
* @hibernate.property column = "owner_name"
* @return
*/
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
/**
* @hibernate.set inverse = "true" cascade = "all"
* @hibernate.collection-key column = "car_id"
* @hibernate.collection-one-to-many class = "net.alp.model.Car"
* @return
*/
public Set getCars() {
return cars;
}
public void setCars(Set cars) {
this.cars = cars;
}
}
build.xml
<?xml version="1.0" encoding="UTF-8"?> <project> <!-- set properties --> <property name="src.dir" value="src"></property> <property name="lib.dir" value="lib"></property> <property name="build.dir" value="build"></property> <property name="dist.dir" value="dist"></property> <property name="project_name" value="xdoclet"></property> <property file="hibernate.properties"></property> <path id="lib.classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </path> <path id="src.classpath"> <pathelement location="${src.dir}"/> </path> <path id="runtime.classpath"> <path refid="lib.classpath"></path> <path refid="src.classpath"></path> </path> <!-- ================================= target: genate-hiberate3.x ================================= --> <target name="gen-hib"> <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask" classpathref="runtime.classpath" > </taskdef> <hibernatedoclet destdir="${src.dir}" verbose="true" > <fileset dir="${src.dir}"> <include name="**/*.java"/> </fileset> <hibernate version="3.0"/> <hibernatecfg dialect="${hibernate.dialect}" jdbcUrl="${hibernate.connection.url}" driver="${hibernate.connection.driver_class}" username="${hibernate.connection.username}" password="${hibernate.connection.password}" showSql="false" version="3.0" /> </hibernatedoclet> </target> </project>
hibernate.properties
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.url=jdbc:mysql://localhost:3306/test hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.username=root hibernate.connection.password=root
表建好了,这是用ant生成的SQL
alter table car
drop
foreign key FK17FD49D5CA7DA;
drop table if exists car;
drop table if exists owner;
create table car (
car_id integer not null auto_increment,
car_name varchar(255),
primary key (car_id)
);
create table owner (
owner_id integer not null auto_increment,
owner_name varchar(255),
primary key (owner_id)
);
alter table car
add index FK17FD49D5CA7DA (car_id),
add constraint FK17FD49D5CA7DA
foreign key (car_id)
references owner (owner_id);
生成这段的SQL在下面补上
<!-- ================================= target: gen sql ================================= --> <target name="gen sql"> <mkdir dir="sql"/> <java classname="org.hibernate.tool.hbm2ddl.SchemaExport" fork="true"> <classpath refid="runtime.classpath"></classpath> <arg value="--text"/> <arg value="--quiet"/> <arg value="--format"/> <arg value="--output=sql/schema.sql"/> <arg value="--properties=${basedir}/hibernate.properties"/> <arg value="--delimiter=;"/> <arg value="${src.dir}/net/alp/model/*.xml"/> </java> </target>