Nao sei como veriricar as demais chaves antes de salvar, quando chamo o metodo save() do hibernate, dah um erro de duplicate entry…
Eis a minha configuraçao:
create table bairro(
id_bairro int not null primary key auto_increment,
nome varchar(50) not null,
unique idx_nome(nome)
)type=InnoDB;
Ou seja, alem do indice, nao pode haver nenhum bairro com nome repetido.
Agora, usando o hibernate:
public boolean save(Bairro b) {
Session sessao = db.getSession();
Transaction trans = sessao.beginTransaction();
sessao.beginTransaction();
sessao.save(b);
trans.commit();
sessao.close();
return false;
}
Agora, o erro ocorre quando:
Bairro b = new Bairro();
b.setId(1);
b.setNome("Kemper");
try {
bm.save(b);
}catch (Exception ee){
ee.printStackTrace();
}
Ocorre que se jah houver um bairro com este nome ‘Kemper’, porem com uma id diferente, da o seguinte erro:
13/08/2007 10:42:00 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 1062, SQLState: 23000
13/08/2007 10:42:00 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: Duplicate entry 'Kemper' for key 2
org.hibernate.exception.ConstraintViolationException: could not insert: [sisGPMembers.Bairro]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
(...)