Você pode fazer isso usando o auxiliar do Hibernate objetos support, mas não pode ser feito usando anotações :-(.
No seu exemplo, seria algo assim (muitas coisas omitidas por brevidade):
<class name="Person" table="persons">
<!-- whatever -->
<database-object>
<create>create index sysuuid on persons ( system, `uuid`(8) )</create>
<drop>drop index sysuuid</drop>
<dialect-scope name="org.hibernate.dialect.MySQL5InnoDBDialect" />
</database-object>
</class>
Peço desculpas pela falta de uma resposta baseada em anotações :-(. Espero que isso ajude.
OBSERVAÇÃO :Se você adotar essa abordagem, esteja ciente de que o escopo do dialeto deve corresponder exatamente . Por exemplo, se sua configuração do Hibernate diz para usar
MySQL5InnoDBDialect
, você deve ter esse dialeto no <dialect-scope>
elemento também. Usando MySQLDialect
não funcionará mesmo sendo a superclasse do dialeto InnoDB.