Mapear tabela com registros fixos

4 respostas
tiagowanke

Boa tarde,

Gostaria de sugestões para como mapear uma tabela que armazene apenas registro fixos no sistema.
Exemplo, uma tabela que armazene os tipos de usuário do sistema:

tipo_usuario
id | nome
1 | Administrador
2 | Colaborador

Meu sistema não irá efetuar persistência nesta tabela, apenas irá utilizar para consultar e associar a outras entidades.

Agradeço desde já.

4 Respostas

Hebert_Coelho

Crie a classe mapeando para essa tabela.

Na classe, coloque as opções do @Column de update e insert como false.

Mas se lembre que o delete ainda assim será permitido.

tiagowanke

Obrigado pela resposta jakefrog.

Não é exatamente o que procuro. Estava lendo na documentação do hibernate sobre o readonly, mas não achei nada para colocar anotação na entidade.

tiagowanke

O mais próximo que encontrei até agora foi a anotação @Immutable adicionada na entidade, que faz com que a entidade não sofra update.
Segundo a documentação:

An immutable entity may not be updated by the application. Updates to an immutable entity will be ignored, but no exception is thrown. @Immutable must be used on root entities only
http://docs.jboss.org/hibernate/orm/4.0/javadocs/

Não fala nada sobre não permitir insert e delete, porém fiz alguns testes aqui e permite. Apenas bloqueia o update. Da para utiizar essa anotação em um atributo que seja uma lista, ai funciona da seguinte forma:
@Immutable placed on a collection makes the collection immutable, meaning additions and deletions to and from the collection are not allowed. A HibernateException is thrown in this case.

Hebert_Coelho

Para coleções existem também o método Collections.immutableList() se não me engano que também retorna uma lista que não poderá ser alterada.

Mas uma anotação que bloqueie algum CRUD por completo, não vi até hoje.

Criado 27 de janeiro de 2012
Ultima resposta 27 de jan. de 2012
Respostas 4
Participantes 2