tengo este metodo en java es sobre java ee aplicando entity manager
Código:
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 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(); }