domingo, 9 de setembro de 2018

Exclusividade - Parte 2/2

Introdução

No post anterior estudamos a anotação @ArchValidExclusive, que garante a exclusividade para um determinado atributo na entidade. Nesse post veremos a anotação @ArchValidExclusives, que é a forma de garantirmos exclusividade em uma entidade em mais de um atributo.

@JArchValidExclusives

Vamos ver o seguinte exemplo na entidade Pessoa. Para essa entidade foi usada a anotação @JArchValidExclusives para garantir que não exista duplicidade para os atributos nomeRazaoSocial e email.
Vejamos a definição dessa classe:
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@JArchValidExclusives(attributes = {"nomeRazaoSocial", "email"})
@Table(name = "tb_pessoa")
@Entity(name = "pessoa")
public class PessoaEntity extends CrudMultiTenantEntity {

 @SequenceGenerator(name = "PessoaIdSequence", sequenceName = "sq_idpessoa", allocationSize = 1)
 @Id
 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PessoaIdSequence")
 @Column(name = "id_pessoa")
 private Long id;
 
 @Column(name = "nm_nomerazaosocial", length = 100)
 @ArchValidRequired("label.nomeRazaoSocial")
 private String nomeRazaoSocial;

 @Column(name = "nm_apelidofantasia", length = 100)
 @ArchValidRequired("label.apelidoFantasia")
 @ArchValidExclusive
 private String apelidoFantasia;

 @Column(name = "ee_email", length = 100)
 @ArchValidEmail
 private String email;

 @Column(name = "nr_cpfcnpj", length = 20)
 @ArchValidCpfCnpj
 private String cpfCnpj;

Observe que na linha 1 foi usado a anotação, para garantir que não seja cadastrado 2 registros com a mesma informações de Nome/Razão Social e E-mail.
Segue um print de uma pessoa cadastrada:

Agora vamos tentar incluir um registro com esses mesmo dados (Nome/Razão Social e E-mail):


Mas se alterarmos somente o nome:

Essa anotação possui os seguintes atributos:
caseSensitive: O conteudo avaliado será case-sensitive
message: A messagem de erro que será mostrado
ignoreProcessor: Para não criticar na compilaao que o atributo não foi encontrado. Usado somente se alguns dos atributos for uma referência a um atributo de algum relacionamento da entidade.

Conclusão

Essas anotações são uma ferramenta poderosa para garantir unicidade de informação, nos livrando da complexidade e verbosidade de codificação para atingir esse objetivo.

Até mais,

Nenhum comentário:

Postar um comentário

Versão 23.3.0-Final

      Introdução Nesse post vou mostrar as principais novidades da versão 23.3.0, algumas correções e pequenas alterações. Alterações Além d...