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