Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


The options supported are:

-dbDatabase connection string as username:password@hostname[:port]/databasename (required)
-dbtypeThe database type: postgres or oracle (required)
-sourceSpecifies the root of the source directory for both existing and generated sources
-pkgThe package name for the generated classes
-destroy-constructorsWhen set, this destroys all constructors in existing Java classes. It can be used to get rid of the silliness generated by the hibernate pojo tool
-ffrWhen set all field names are forcefully renamed to the name as decided by column name and prefix.
-frmWhen set all getter and setter methods in existing classes are renamed to whatever the property name is calculated to be
-nb, -no-bundlesDisable generation of .properties bundles
-no-baseclassDo not try to find base classes for new pojo's
-no-deserialPostgres 'serial' columns are actually just columns with a 'default' which retrieves a value from a generated sequence. By default the code will find this sequence and generate a SEQUENCE type of ID generator. Setting this option will cause the code to use the generated.IDENTITY method.
-no-onechar-booleanBy default, all columns found that are (var)char with a size of 1 and that contain <= 2 distinct values are generated as boolean with an appropriate @Type annotation. This option disables that.
-noi, -no -identifyableBy default all generated classes will implement IIdentifyable<T>. This disables generating that.
-s, -schemaAdds a schema to reverse engineer

Generated code

When the generator writes its output it will always make a backup copy of all files it overwrites, as ".old" files. In addition, when a .old file exists, the generator will always read that file as the source file when called again. This allows you to re-run the generator many times until the result is as desired; it will never re-read the code it has generated but instead the data that was present at the start.

Once you are happy with the result you should remove the .old files.

A .old file 0 bytes long is generated for all new files, so that the generator knows that those are not original either. Keep that in mind if you want to rename the .old files back.

Specifying exceptions and overriding names

By default the generator will try a bit to concoct reasonable names for classes and properties, but the quality is very dependent on whatever is used in the database. If you do not like the generated names you have two choices:

  • Use your favorite IDE to rename the field, getter and setter. This will work fine, because the next time the generator is run it will know that new name from the .java source and use that by default.
  • Add an override to the GenHib.xml file

The GenHib.xml file gets generated/updated by the generator every time it is run. After the first run it will contain all possible options that can be set for all tables and columns with an "empty" value which means "use the default, Luke". You can simply edit this file to override the names and other things for classes. So a typical run would be:

  • Run the generator to create all classes
  • Inspect the classes, and change everything you hate by updating GenHib.xml
  • Repeat from step one until satisfied

Do not forget to add the .xml file to your VCS.