@Id
private String cpfCNPJ;
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
Como Criar id Automatico hibernate sem ser o id a pk
8 Respostas
Tente deixar como Increment. No hibernate “puro”, é este o parâmetro que encontra o ID.
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
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.
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?
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.
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 ?
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
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.