Eu tenho um projeto multi-tenant com um banco de dados por cliente. Então, é complicado manter a estrutura dessas bancos de dados atualizada. Eu descobri há alguns dias que um dos valores possíveis para a propriedade hbm2dll é o validate que dispará uma exeção quando a estrutura do banco de dados está diferente da entidade do Hibernate.
Porém, acho que isso não está funcionando muito bem. Por exemplo com essa coluna:
@Column(columnDefinition=“TINYINT(1) default 0”)
private int importance;
Quando o hibernate tem a propriedade setada como update, cria uma coluna assim no banco de dados:
importance tinyint(1) default 0
A principio a estrutura estaria correta no banco de dados, porém o hibernate (quando setado como validate) dispará essa exceção:
Exception in thread “main” org.hibernate.HibernateException: Wrong column type in xxxxx.table_name for column importance. Found: bit, expected: TINYINT(1) default 0
O hbm2dll realmente funciona?