Mapeando Unique Constraint

Existem diversas validações a nível de banco para deixarmos o modelo mais seguro, uma delas é a unique Constraint, que determina uma regra para que o registro seja único.

Para que o modelo esteja bem claro a nível de código e para podermos usar validações(ex: javax.validation.ConstraintViolation) é importante que a entidade seja configurada corretamente de acordo com o banco. A baixo segue o sempre de como mapear uma unique Constraint em uma Entidade.

...
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

@Entity
@Table(uniqueConstraints = 
    @UniqueConstraint(columnNames = "CNPJ", name = "empresa_uk"))
public class Empresa {
   
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    private String cnpj;

}
  • uniqueConstraints: Define a área de criação de constraints(dentro da anotação @Table), podendo ter uma ou mais;
  • UniqueConstraint: Define que existe um UniqueConstraint;
    • columnNames: Define quais campos formaram a regra de unico, no exemplo é o atributo CNPJ, mas poderia ser 2 atributos e a sintaxe seria : columnNames = {“CNPJ”, “TIPOPESSOA”}. Obs: é o atributo da classe, não o nome do campo no banco de dados
    • name: O nome da UniqueConstraint no banco de dados.

Abaixo o SQL para criar a constraint

alter table empresa add constraint empresa_uk UNIQUE(cnpj);
Observação
Banco utilizado é o postgres, talvez o script mude de acordo com o banco.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.