PDA

View Full Version : [JSP/Hibernate] Problema update/insert


ianaz
19-06-2008, 14:56
Salve,
ho un problema quando aggiorno qualcosa con Hibernate...
quando aggiorno un oggetto in una List a volte me lo vede a volte no, a volte mi vede quello che c'era 2 modifiche prima,... :S

Faccio un esempio:

Ho Utente, l'utente ha tante Info_utente.


Quando aggiorno un Info_utente di un Utente faccio:

Session fac = HibernateUtil.currentSession();
fac.beginTransaction();

// Ricavo l'oggetto info_utente
Info_utente info_utente = (Info_utente) fac.get(Info_utente.class, id);

Utente utente = info_utente.getUtente();

// qui modifico info_utente...

fac.update(info_utente);
fac.update(utente);
fac.flush();
fac.getTransaction().commit();

Qualcuno sa dirmi il perché sul db é giusto, aggiornato, ma ogni tanto vedo un dato di 3 modifiche prima? Impazzisco con sto problema...

ianaz
20-06-2008, 14:31
Risolto con un filter. Sperando che possa venire utile a qualcuno posto il link della discussione e il codice del filtro

La discussione: http://www.webti.ch/forum.php5?mode=po&pid=811580
Il codice del filtro:
package org.ianaz.filtri;

import org.ianaz.util.HibernateUtil;
import java.io.*;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;

/**
*
* @author rainolsi
*/
public class HibernateFilter implements Filter {

private static Log log = LogFactory.getLog(HibernateFilter.class);

public void init(FilterConfig filterConfig) throws ServletException {
log.info("Servlet filter init, now opening/closing a Session for each request.");
}

public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

try {
chain.doFilter(request, response);

Session fac = HibernateUtil.currentSession();
fac.beginTransaction();


} finally {
HibernateUtil.closeSession();

}
}

public void destroy() {
}
}