ciao!
io ho questo bean:
da qui eseguo una query per pendere i dati, e ho anche un metodo per inserire i dati nel db.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; } }
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:
e questa la classe HibernateUtilcodice: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; } }
qualcuno ha qualche suggerimento??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; } }

Rispondi quotando