Problema com update

8 respostas
G

Boa tarde galera, estou tendo um problema ao fazer um update em meu banco de dados, vou colar o código primeiro e explicar o "erro" em seguida porque assim será mais simples de entender. Segue o código:

public void atualizaCampos(Long id, BigDecimal vrTaxaK1Aplicado, Date dtAplicacaoK1, BigDecimal vrTaxaK2Aplicado, Date dtAplicacaoK2) throws PlcException{
		
		try {
		    Session session = getSession();
		    StringBuilder hql = new StringBuilder();

		    hql.append(" update ");
		    hql.append(ImoveisPremendControleEntity.class.getName()).append(" obj ");
		    hql.append(" set obj.vrTaxaK1Aplicado  = :vrTaxaK1Aplicado, " +
		    			"obj.dtAplicacaoK1 = :dtAplicacaoK1, " +
		    			"obj.vrTaxaK2Aplicado = :vrTaxaK2Aplicado, " +
		    			"obj.dtAplicacaoK2 = :dtAplicacaoK2 ");
		    hql.append(" where obj.id = :id  ");

		    Query query = session.createQuery(hql.toString());
		    query.setParameter("id", id);
		    query.setParameter("vrTaxaK1Aplicado", vrTaxaK1Aplicado);
		    query.setParameter("dtAplicacaoK1", dtAplicacaoK1);
		    query.setParameter("vrTaxaK2Aplicado", vrTaxaK2Aplicado);
		    query.setParameter("dtAplicacaoK2", dtAplicacaoK2);
		    
		    if( query.executeUpdate() == 0 )
		    	throw new PlcException("webpremend.controlepremend.erro.controleNaoEncontrado", new Object[] {});
		    else {
		    	if( query.executeUpdate() <= -1) 
		    			throw new PlcException("webpremend.controlepremend.erro.setarCamposLeitura", new Object[] {});
		    }
		} catch (Exception e) {
		    throw new PlcException("jcompany.erro.generico", new Object[] { "atualizaSituacaoAluno", e }, e, log);
		}		
	}
O problema que estou tendo é o seguinte, todos os parâmetros são recebitos e setados corretamente na minha query só que quando é executado o primeiro if
if( query.executeUpdate() == 0 )
, ele entra na minha exception como se não houvesse registros cadastrados no banco de dados sendo que na verdade existe. Alguém sabe me orientar como descobrir ou tem alguma solução para o meu problema? Desde já, agradeço pela atenção!

8 Respostas

P

Cara o que tu tá fazendo não é uma boa prática.
Tira esses ifs e procura tratar as exceções de outro jeito.

Na documentação do hibernate tu vai ver porque esses ifs não são eficientes.

http://docs.jboss.org/hibernate/core/3.6/reference/pt-BR/html/batch.html

G

Mas o caso é que ele não encontra os registros no banco mesmo que exista algum registro relacionado ao ID da clausula where, alguém mais sabe me dizer o porque?
grato pela ajuda!

G

alguem?

G

mais alguem?

L

nossa cara que zica este seu codigo ai,
naum e mais facil vc carregar seu objeto do banco,alterar os dados dele e dar um saveorUpdate com o session???
ou tem algum motivo especial pra vc estar fazendo td esta zica ai?

G

pois é cara, eu ja fiz isso que vc disse de pegar o objeto do banco e tentar um saveorupdate, já carreguei o objeto da sessão para atualizar os valores e tentei salvar também, ta entre uma das soluções que apliquei testei e não funcionaram, esse update ai é tipo o último recurso que conheço já que todas as outras soluções (que são mais viáveis e corretas) já falharam. O save ta dano mais problema ainda por isso tentei o update.
:confused:
ta tenso

L

naum tente resolver as coisas com pog, tente da maneira correta e vc postando as duvidas aki.

G

Alguem mais com alguma idéia do que pode ser este problema e/ou de como solucioná-lo?

Criado 17 de agosto de 2010
Ultima resposta 26 de ago. de 2010
Respostas 8
Participantes 3