boa tarde…
tenhu um classe simples de usario
com um atributo - private string nome;
queria fazer com que esse atributo nao tenha repito no banco … tem alguma atrinto no @… q permite isso??
boa tarde…
tenhu um classe simples de usario
com um atributo - private string nome;
queria fazer com que esse atributo nao tenha repito no banco … tem alguma atrinto no @… q permite isso??
Seria isso que você quer?
@Column(name="tx_nome",unique=true, nullable=false)
Private String nome;
ok obrigado funciiou… obrigado
Bem … Utilize isso
@Column(unique=true)
Porém … vc deveria comparar o nome + o sobrenome para evitar repetições e não somente o nome …
isso nao impediu de gravar nao… gravou normalmente com o msm nome
estou usando firebird
Mas você mudou o banco de dados?
você ta criando a tabela pelo Hibernate ou diretamente no SGBD?
o banco eu crio no SGBD, eu uso o hibernate so para persisitir… mas tenhu uma duvida
se eu fizer so pelo SGBD nao tem necessidade neh de fazer pela classe??
e no meu caso nessa classe tem os atributos , usuario, nome nao quero q nenhum dos dois repita
eu estava pensando em usar o try/catch para pegar o retorno quando nao inserçao ja existir, isso tem como? e se tiver como, tambem
estou querendo saber se o repetido é o nome ou o usuario, isso tb tem como?
[quote=DaitonJr]o banco eu crio no SGBD, eu uso o hibernate so para persisitir… mas tenhu uma duvida
se eu fizer so pelo SGBD nao tem necessidade neh de fazer pela classe??
e no meu caso nessa classe tem os atributos , usuario, nome nao quero q nenhum dos dois repita
eu estava pensando em usar o try/catch para pegar o retorno quando nao inserçao ja existir, isso tem como? e se tiver como, tambem
estou querendo saber se o repetido é o nome ou o usuario, isso tb tem como?[/quote]
É de boa prática que coloque na classe também.
try{
//salvar
}
catch (ConstraintViolationException e) {
e.printStackTrace();
}
Se vc não estiver usando o hibernate vc tem q colocar a coluna como unique isso vai impedir registros duplicados por esta coluna.
E fazendo o que o amigo falou ai em cima, dentro do catch vc trabalha o retorno q quer dar ao seu usuario…
estou usando o hiberanate… mas esta gravando duplicado msm com o unique true
nesse caso estou ponto unique em dois campos , mas tem como no try/catch eu pega o campo q nao aceitou… pq seria um mensagem pro usuario, nao posso simplesmente por o erro do try/catch direto pro usuario
o stack trace com certeza deve te retornar a chave q violou a constraint. dentro do cacth vc pode verificar isso e retornar para o usuario qual campo ele deve corrigir…
vc esta criando o banco pelo hibernate com
<property name="hibernate.hbm2ddl.auto">create</property>
verifique se o index realmente foi criado…
nao, o banco ja esta criado uso o hibernate so pra persistir os dados mas tem algumas coisas q nem os joincolum q faço na classe…