Foros del Web » Programación para mayores de 30 ;) » Java »

Error metodo java

Estas en el tema de Error metodo java en el foro de Java en Foros del Web. Buenas amigo vengo aca porque en verdad ya no se como darle solución a mi problema tengo este metodo en java es sobre java ee ...
  #1 (permalink)  
Antiguo 10/05/2016, 11:45
 
Fecha de Ingreso: febrero-2016
Mensajes: 13
Antigüedad: 8 años, 2 meses
Puntos: 0
Error metodo java

Buenas amigo vengo aca porque en verdad ya no se como darle solución a mi problema
tengo este metodo en java es sobre java ee aplicando entity manager
Código:
public void crearHistorial(Equipo equipo) {
        //Se crea el historial
        historialDao.crearHistorial(equipo, login.getUsuario(), historial.getHorastd(), historial.getUbicacion());
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("inventarioPU");
        EntityManager em = emf.createEntityManager();
        equipo.setUbicacion(historial.getUbicacion());
        //actualizo la entidad equipo para pasarle a nueva ubicacion
        equipoDAO.actualizarEquipo(equipo, login.getUsuario());
        abrirEquipo(equipoID);
        //se realiza una busqueda del historial
        listahist = bm.buscarHistorial(equipoID);
        //metodo para buscar el equipo por id
        Equipo c = em.find(Equipo.class, equipo.getId());
        //recorrer la lista
        for (Historial hist : listahist) {
        /* se realiza la busqueda de la clases historial para traer sus atributos*/
            Historial d = em.find(Historial.class, hist.getId());
            /*aca se necesita capturar las horas trabajadas se hace mediante la resta de las
            horas ingresadas - las horas totales que ya tiene el equipo y funciona me setea la resta*/
            d.setHorasTrabajadas(d.getHorastd() - c.getHorastotales());
            /*Aqui donde esta el problema cuando se registra un historial por
            primera ves no da errores cuando se registra el segundo
            el resultado que te genera las horas trabajas te lo resta al primer registro por ejemplo
            el primer resultado del primer registro es 1.5 pero el segundo es 3.5 el primer resultado 
            lo coloca en 0 cada vez que ingreses uno nuevo te resta cuando se declara este metodo
            si lo quito el programa corre de maravillas y bo me resta ningun resultado*/
            c.setHorastotales(c.getHorastotales() + hist.getHorasTrabajadas());
            //estos metodos no se ve afectados la resta la hace correctamente
            c.setHorasmotor(c.getHorasmotor() - hist.getHorasTrabajadas());
            c.setHorashrida(c.getHorashrida() - hist.getHorasTrabajadas());
              em.getTransaction().begin();
              em.merge(d);
              em.getTransaction().commit();
        }
        em.getTransaction().begin();
        em.merge(c);
        em.getTransaction().commit();
        }
que es lo que busco realizar cada ves que ingrese un historial no me borre las horastrabajas como lo hace actualmente cuando se registra uno nuevo siempre me resta el resultado anteior
  #2 (permalink)  
Antiguo 10/05/2016, 12:28
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Error metodo java

Lo que puedes hacer es declarar variables globales e iniciar dichas variables antes del ciclo for con los valores que deseas que tengan, ya dentro del ciclo realizas las operaciones que necesitas.
  #3 (permalink)  
Antiguo 10/05/2016, 16:18
 
Fecha de Ingreso: febrero-2016
Mensajes: 13
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Error metodo java

si pero la variable de horas trabajadas se obtiene mediante un update no se declara directamente pero cuando las horas totales de actualiza me resta esos valores no entiendo porque
  #4 (permalink)  
Antiguo 11/05/2016, 08:19
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Error metodo java

Entonces lo que tienes que hacer es que cada vez que requieras el uso de ese metodo inicialices las variables a 0 (cero), porque lo que hace es que cada vez que se ejecuta el proceso conserva el valor del resultado de la operacion anterior, por eso es que te esta generando ese error
  #5 (permalink)  
Antiguo 11/05/2016, 15:13
 
Fecha de Ingreso: febrero-2016
Mensajes: 13
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Error metodo java

mmmmm bueno es otra idea puede ser eso pero si inicializo la variable en 0 como podria hacerlo con que metodo.

Etiquetas: clase, metodo, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:20.