Ajuda com classe entidae+hibernate

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…