Spring lançando JpaSystemException ao usar o Hibernate Validator

1 resposta
FkJ

Quando utilizo o Hibernate Validator (3.1.0) com o Spring (2.5.6) não consigo capturar a InvalidStateException diretamente. O Spring lança uma JpaSystemException, que tem como causa uma RollBackException, que por sua vez tem como causa a InvalidStateException. O mesmo ocorre com PersistenceException e IllegalArgumentException em métodos que implementei, como no exemplo abaixo:

@PrePersist @PreUpdate protected void prePersist(StReservaVeiculo reserva) { if(reserva.getKmInicial() != null && reserva.getKmFinal() != null && reserva.getKmInicial() > reserva.getKmFinal()) { throw new PersistenceException("KM inicial maior que KM final"); } }

No DAO está da seguinte forma:

@Transactional(readOnly = false, propagation = Propagation.REQUIRED) public void persist(T t) { em.merge(t); }

Isso é normal?

Obrigado,
Felipe

1 Resposta

FkJ

Invocando o método flush() depois do merge() consegui o resultado esperado, mas o problema é que já vi gente crucificando tal método, inclusive comparando que um “não use flush” seria equivalente a um “não corra segurando uma tesoura” rsrs

De acordo com a espeficição ele parece inocente http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#flush()

O que acham?

Criado 16 de abril de 2009
Ultima resposta 17 de abr. de 2009
Respostas 1
Participantes 1