Personally I think a database is more important that the mapping layer, so I never let it generate my tables; database first, mapping second. There are things, like triggers, that probably never will be supported through JPA (since the language dialects between databases differ way to much).
That said, I still hope that there will be a better trigger support on JPA level; the @PreSave annotation and friends have some issues.
Specifing the index through annotation is not in the Public Draft of JPA
2.0 and I do not expect it to be part of the Specification. The only way
to specify index currently is to provide a "columnDefinition" to the
When designing a database one should consider the DDL generation of JPA to
be a helpful tool. DDL generation from JPA should not be considered a
replacement for thorough database design.