Usando @Enumerated para persistência de tipos Enum, eu obtenho uma representação String ou um número no meu banco de dados. Nada me impede de alterar esses valores diretamente no BD. Quando meu objeto for carregado, vou receber uma Exception.
Não tem como fazer uma verificação no próprio BD para impedir que esse valor seja alterado? Algo como persistir o meu tipo enum como uma entidade, e impedir a alteraração de valores dessa tabela. Ou então colocar uma restrição no banco de dados (através de anotações) para que o campo possa ter apenas os valores determinados.
Algumas idéias:
- Implementar um UserType no hibernate para eu personalizar o mapeamento
- Clonar meu enum numa Classe, e fazer algum hack no meu código para que o Enum pudesse ser aceito no lugar da minha classe.
Alguém tem alguma sugestão?