Estou tentando tratar um erro de chave primaria duplicada e não estou conseguindo.
Optei por criar um modelo que a chave primaria será informada pelo usuário, pois como serão incluídos poucos registro, quero deixar um id personalizado facilitando a memorização do código nas telas de inputs.
Models
Dao
Bean
Erros
ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-1) Duplicate entry ‘072’ for key ‘PRIMARY’
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘072’ for key ‘PRIMARY’
Caused by: javax.faces.el.EvaluationException: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
Caused by: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
[/quote]
Nesse caso, vc deveria verificar a existência do ID no banco e, caso exista, informar ao usuário e solicitar que ele informe um ID diferente.
public void salvar(Cultura cultura) {
if (manager.verificarSeIdExiste(cultura.getId())) {
throw new NegocioException("O ID informado já está sendo utilizado, por favor utilize outro");
}
manager.persist(cultura);
}
Nesse exemplo, o método verificarSeIdExiste retornaria um boolean quando um registro no banco fosse encontrado para o ID da cultura recebido.