Como Criar id Automatico hibernate sem ser o id a pk

8 respostas
javahibernate
W
@Id
private String cpfCNPJ;

@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

8 Respostas

4

Tente deixar como Increment. No hibernate “puro”, é este o parâmetro que encontra o ID.

W

cara, não conseguir encontrar uma maneira disso funcionar,

como o id não é @ID na verdade, preciso gerar uma sequencia automatica para esse campo, e ainda não achei nada na net

4

Se o campo ID na vdd n é o ID, porque vc incluiu ela na Entidade? Fetiche? Pois n faria sentido usar @GeneratedValue(strategy = GenerationType.AUTO) em um campo qualquer da Entidade.

W

Ser cabaço em programação pode ser a resposta por ter incluido este id, kkkk

mas então, o mais indicado para pegar o id de um cliente é buscar o valor que o banco atribui a ele ? ou eu posso manter esse id, mesmo não sendo @ID, e gerar uma sequencia de valores, mas que ainda não sei como faz?

4

Vc atribuiu um campo String como id, isso vc deve tratar via código, esqueça a existência de um campo ID do tipo Integer q n faz nada. Logo vc não precisa de GenerateValue nesta Entidade.

W

entendo, então o correto, caso eu queira exibir para o usuario, ou efetuar uma busca por um “id” de um cliente, eu devo buscar o valor que o banco deu a este registro, correto ?

4

Utilize sempre um ID do tipo Integer, pois ao declarar um nome como ID, não poderá existir outros nomes iguais (E existe pessoas com nomes iguais).
Recomendo vc criar um campo ID do tipo Integer com o nome cod, Id, codigo…(Tanto faz). E trabalhar por cima disso. Da menos dor de cabeça, consequentemente menos dinheiro gasto com Paracetamol.
E neste ID do tipo Integer, int… (sei la o que vc prefere) ae sim vc coloca o GeneratedValue

R

Não vejo necessidade do campo ID nesta entidade, uma vez que a PK da entidade é CPF ou CNPJ. É comum querermos colocar ID nas nossas entidades. Claro que teria que ver a sua regra de negócio pra entender se esse ID faz sentido, mas a grosso modo, não faz.

Sabendo que o CPF ou CNPJ é único para uma pessoa, vc poderia colocar este valor como Long ou manter como String, no entanto, como não se pode garantir qual será o valor recebido no campo, eu faria o tratamento de chave única, ficando:

@Id
@Column(unique="true")
private String cpfCNPJ;

Desta forma, se chegar um CPF ou CNJP já cadastrado, será lançada uma exception.

Criado 16 de outubro de 2016
Ultima resposta 27 de out. de 2016
Respostas 8
Participantes 3