If you'd like to generate the database schema file with the Hibernate Tools
Ant task, you'll probably notice that the generated file doesn't contain definitions
of versions tables. To generate also the versions tables, you simply need to use
org.hibernate.tool.ant.EnversHibernateToolTask instead of
the usual org.hibernate.tool.ant.HibernateToolTask. The former class extends
the latter, and only adds generation of the version entities.
So you can use the task just as you used to.
For example:
<target name="schemaexport" depends="build-demo"
description="Exports a generated schema to DB and file">
<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.EnversHibernateToolTask"
classpathref="build.demo.classpath"/>
<hibernatetool destdir=".">
<classpath>
<fileset refid="lib.hibernate" />
<path location="${build.demo.dir}" />
<path location="${build.main.dir}" />
</classpath>
<jpaconfiguration persistenceunit="ConsolePU" />
<hbm2ddl
drop="false"
create="true"
export="false"
outputfilename="versioning-ddl.sql"
delimiter=";"
format="true"/>
</hibernatetool>
</target>
Will generate the following schema:
create table Address (
id integer generated by default as identity (start with 1),
flatNumber integer,
houseNumber integer,
streetName varchar(255),
primary key (id)
);
create table Address_versions (
id integer not null,
_revision integer not null,
flatNumber integer,
houseNumber integer,
streetName varchar(255),
_revision_type tinyint,
primary key (id, _revision)
);
create table Person (
id integer generated by default as identity (start with 1),
name varchar(255),
surname varchar(255),
address_id integer,
primary key (id)
);
create table Person_versions (
id integer not null,
_revision integer not null,
name varchar(255),
surname varchar(255),
_revision_type tinyint,
address_id integer,
primary key (id, _revision)
);
create table _revisions_info (
revision_id integer generated by default as identity (start with 1),
revision_timestamp bigint,
primary key (revision_id)
);
alter table Person
add constraint FK8E488775E4C3EA63
foreign key (address_id)
references Address;