У меня есть приложение JEE, которое работает в Tome Plume 7.1.0.Я пытаюсь откатить простую транзакцию, генерирующую RuntimeException, но изменения всегда вносятся в базу данных.При выполненииека*
Бин с сохранением состояния
@Named
@ViewScoped
public class EditarUsuarioBean {
@Inject
private UsuarioServicio servicio;
public String eliminarUsuarios(){
try{
servicio.eliminarUsuarios()
}
catch(Exception ex){}
}
Бин без сохранения состояния
@Stateless
public class UsuarioServicio {
@PersistenceContext(unitName = "XinsPU")
private EntityManager em;
public List<Usuario> listado() throws Exception{
Query consulta = em.createQuery("SELECT u FROM Usuario u");
return consulta.getResultList();
}
//Never rollback transaction. With or without @Transactional anotation
//@Transactional( rollbackOn={MiExcepcion.class } )
public boolean eliminarUsuarios() throws Excepcion{
List<Usuario> listaUsuarios = listado();
for(Usuario u : listaUsuarios){
em.remove(u);
}
em.flush();
throw new MiExcepcion();
return true;
}
Исключение
@ApplicationException(rollback=true)
public class MiExcepcion extends RuntimeException {