ciao!
io ho questo bean:
codice:
@ManagedBean(name = "lb")
@SessionScoped
public class LavoriBean {
private String titolo;
private String testo;
private DataModel lavori;
private LavoriHelper helper;
public LavoriBean() {
helper = new LavoriHelper();
}
public String getTitolo() {
return titolo;
}
public void setTitolo(String titolo) {
this.titolo = titolo;
}
public String getTesto() {
return testo;
}
public void setTesto(String testo) {
this.testo = testo;
}
public DataModel getLavori() {
if (lavori == null) {
lavori = new ListDataModel(helper.getLavori());
}
return lavori;
}
public void addLavoro() {
helper.addLavoro(null, titolo, testo, new Date(), 0);
FacesMessage fMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Lavoro inserito", null);
FacesContext fc = FacesContext.getCurrentInstance();
fc.addMessage(null, fMsg);
UIViewRoot uiViewRoot = fc.getViewRoot();
HtmlInputText txtTitolo = (HtmlInputText) uiViewRoot.findComponent("frm_add_lavoro:titolo");
txtTitolo.setValue("");
HtmlInputTextarea txtTesto = (HtmlInputTextarea) uiViewRoot.findComponent("frm_add_lavoro:testo");
txtTesto.setValue("");
}
public void recreateModel() {
lavori = null;
}
}
da qui eseguo una query per pendere i dati, e ho anche un metodo per inserire i dati nel db.
vado in home page e prendo i dati che stanno nel db, e fin qui tutto ok.
poi ho un form che richiama addLavoro() che aggiunge i dati al db, e funziona.
solo che se rivado in home l'ultimo record non c'è e devo rilanciare il progrmma.
come se usasse ancora la sessione vecchia.
questa la classe helper:
codice:
public class LavoriHelper {
Session session = null;
public LavoriHelper() {
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
}
public void addLavoro(LavoriSezioni lavoriSezioni, String titolo, String testo, Date data, Integer ordine) {
Transaction tx = session.beginTransaction();
Integer lavoroId = null;
Lavori l = new Lavori(lavoriSezioni, titolo, testo, data, ordine);
lavoroId = (Integer) session.save(l);
tx.commit();
}
public List<LavoriSezioni> getLavori() {
Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Lavori");
List<LavoriSezioni> list = (List<LavoriSezioni>) q.list();
return list;
}
}
e questa la classe HibernateUtil
codice:
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
qualcuno ha qualche suggerimento??