Buenas noches Leslie
El 15 de noviembre de 2009 20:14, Leslie Solorzano
<zloy.sm...@gmail.com> escribió:
Ayer trabajando con los compañeros en JPA descubrimos que no sabemos
bien como hacer una actualización para que quede guardada en la base
de datos.
Eso es bueno, veamos cuáles son las dudas
Digamos que por ejemplo queremos modificar un booleano que tiene el
paciente por dentro que corresponde a si tiene o no una cita
pendiente, no sabemos como actualizarlo por medio del DAO. Este es el
codigo q tenemos en el DAO de paciente para actualizar.
public void actualizar(Paciente paciente) {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("CitasMedicasPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.refresh(paciente);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
Asumimos que se hace con refresh pero no sabemos eso exactamente qué
haga. No sabemos si toque hacer una query como la hacemos. Nos puedes
mostrar el camino Miguel??
Nop, en realidad refresh hace el proceso inverso, es decir, refresca la
entidad dinámica a partir de la entidad persistente, trayendo la info
desde la DB:
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#refresh%28java.lang.Object%29
Lo que uds necesitan es hacer un merge:
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge%28T%29
Espero haber aclarado el tema, hasta luego.
--
Miguel Cubides
Ingeniería de Sistemas
Universidad Nacional