1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Tratamento de erro de constraint com VRaptor, Hibernate e banco de dados DB2

No projeto que estou atuando possuímos um ambiente Java com Vraptor3.5.1, Hibernate 3.6 e banco de dados DB2. Preciso efetuar um "tratamento de erro" ao efetuar um insert em determinada tabela, a chave primária da tabela está configurada da seguinte maneira:

usuario char(8); data date; hora decimal(8); tipo char(1)

Sim, o campo hora é um Decimal :-(

No momento de inserir o registro, caso seja retornado o erro de SqlIntegrityConstraintViolationException SQLCODE=-803(chave duplicada) meu método de inserir tente inserir o registro novamente alterando o valor do campo hora somando mais +1, mais ou menos assim:

public void insereRegistroNoBanco(Objeto objeto){
        try{
            this.dao.insere(objeto);
        }catch(Exception e){
            //Codigo gambiarra fictício
            if(e.getMessage().contains("SQLCODE=-803")){
                int horaAdicional = objeto.getHora()+1;            
                objeto.setHora(horaAdicional);
                this.insereRegistroNoBanco(objeto);
            }
        }
    }

Temos um problema grave com a modelagem de dados e NÃO podemos efetuar nenhuma alteração na estrutura dessa tabela pois existem centenas de processos desenvolvidos em Cobol que também utilizam essa tabela.

Somar 1 no campo hora não seria um "problema" para esse projeto, pois as rotinas desenvolvidas em Cobol já fazem essa gambiarra constantemente.

Como devo proceder para efetuar esse tipo coisa quando esse tipo de exceção for lançada?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java vraptor db2 hibernate ou faça a sua própria pergunta.