These should be on the existing NamingStrategy, not Dialect.
They also needs to obey length limits on constraints - many dbs does not
allow so long ones.
It is not currently being implemented so feel free to contribute a patch
(most likely for 3.4 since it will break/change API)
/max
Hi,
some time ago I added the following feature to the Hibernate Core:
Automated naming of the constraint types in the hbm2ddl schema export
(naming scheme in brackets)
- Primary Key Constraints (PK_<TABLENAME><IDX>)
- Unique Constraints (UK_<TABLENAME><IDX>_<COLUMNNAME><IDX>)
- Check Constraints
(<CT>_<TABLENAME><IDX>_<COLUMNNAME><IDX>)
- Foreign Key Constraints
(FK_<TABLENAME><IDX>_<COLUMNNAME><IDX>)
<CT> for unique constraints is one of:
- NN for Not Null Constraints
- CK for other Check Constraints
<IDX> is an index that is needed if the table or
column name has to be shortened because of a maximal
length of the constraint name in the database.
At the moment, I have implemented it in the following way:
- The constraint names are generated in the dialect.
- Constraint naming can be turned on and off in the
config file (persistence.xml).
- Via the config file you can specify a character
that is removed from the table and column names to
improve the constraint name length utilization,
e.g. COMPANY_DETAILS can be reduced to COMPANYDETAILS
- The maximal constraint name length can be specified
in the config file as well.
That way, it is possible to identify the reason for a constraint
violation much more easier. Additionally, you have not to be at the
mercy of the database constraint naming schema.
Is something similar implemented at the moment by anyone?
I would be pleased if you like to add this functionality to the
hibernate sources.
In this case I would adapt my implementation:
- Create an own class e.g. DefaultConstraintNamingStrategy,
according to the table and column NamingStrategy ...
- ... that can be overwritten and plugged in via the
config file.
What do you think about this idea?
Best regards,
Jürgen
--
/max