when i run my hibernate tools it reads from the db and create java classes for each tables, and a java class for composite primary keys. that's great.
the problem is this line
@Table(name="tst_feature"
,catalog="tstdb"
)
while the table name is required, the "catalog" attribute is not required. sometimes i want to use "tstdb", sometimes i want to use "tstdev"
i thought which db was chosen depends on the jdbc connection url but when i change the jdbc url to point to "tstdev", it is still using "tstdb"
so, i know what must be done, just don't know how its is done my options are
- suppress the generation of the "catalog" attribute currently i'm doing this manually (not very productive) or i could write a program that parses the java file and remove the attribute manually but i'm hoping i don't have to
OR
- find a way to tell hibernate to ignore the "catalog" attribute and use the schema that is explicitly specified. i don't know the exact setting i have to change to achive this, or even if the option is available.
You need to follow 3 steps -
1) In the
hibernate.cfg.xml
, add this property(as specified in above post)
2) In the
hibernate.reveng.xml
, add all the table filters like this(just this, no catalog name here)
3) Regenerate hibernate code
You will not see any catalog name in any of the
*.hbm.xml
files.I have used Eclipse Galileo and Hibernate-3.2.4.GA.
There is a customization to the generation, that will tell what tables to put in what catalog.
You can specify the catalogue manually (in reveng file,
<table>
element), or programmatically (in your custom ReverseEngineeringStrategy class if I remember well).Also, I recently had to modify the generation templates.
See the reference documentation :
Sorry, this could get more precise, but I don't have access to my work computer right now.
The attribute catalog is a "connection" attribute and should be specified in the "connection" config file
hibernate.cfg.xml
and NOT in a "data" config file*.hbm.xml
.I generate hibernate code via ant task
<hibernatetool>
and I put this replace task after regeneration (replace schema-name with your database).So, after generation, attribute catalog has been removed.
This is a workaround, but code generated works in my development a production environment with different schema-name.