Após ter resolvido 1 problema, eu cai em outro.
Meu sistema estava funcionando, só que as vzs travava, percebi que era pq eu não estava fechando a sessão, mas… Depois que comecei a fechar o sessão, não estou conseguindo mostrar o registro que eu quero.
Seguem as 2 ACTIONS de listarEventos e mostrarEvento e o meu EventoDAO, sendo que o listarEventos está funcionando perfeitamente.
-------------listarEventos------------------
@ParentPackage(“default”)
public class ListarEventosAction {
private String ordem;
private List<Evento> eventos;
private Contador contador;
private Session sessao = new HibernateUtil().openSession();
@Action(value = "listarEventos", results = { @Result(name = "ok", location = "index.jsp") })
public String execute() {
if (ordem == null) {
ordem = "dataagendado";
}
eventos = new EventoDAO(sessao).lista(ordem, new Date(), 0);
//Criando o contador de visitas
contador = new ContadorDAO(sessao).localizar(3);// seta o id
contador.setNacessos(contador.getNacessos() + (long) 1);
new ContadorDAO(sessao).atualiza(contador);
//---------------------------------------------------
sessao.close();
return "ok";
}
public String getAcao() {
return "content-listareventos";
}
public List<Evento> getEventos() {
return eventos;
}
public void setOrdem(String ordem) {
this.ordem = ordem;
}
}
----------------------//-------------------------
-------------mostrarEvento------------------
@ParentPackage(“default”)
public class MostrarEventoAction {
private Evento evento;
private Session sessao = new HibernateUtil().openSession();
@Action(value = "mostrarEvento", results = { @Result(name = "ok", location = "index.jsp") }
)
public String execute() {
EventoDAO dao = new EventoDAO(sessao);
evento = dao.localizar(this.evento.getId());
sessao.close();
return "ok";
}
public Evento getEvento() {
return evento;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public String getAcao() {
return "content-mostraevento";
}
}
----------------------//-------------------------
-----------------EventoDAO--------------------
public class EventoDAO {
private final Session session;
public EventoDAO(Session session) {
this.session = session;
}
public void adiciona(Evento p) {
Transaction tx = session.beginTransaction();
session.save(p);
tx.commit();
}
public void atualiza(Evento p) {
Transaction tx = session.beginTransaction();
session.update(p);
tx.commit();
}
public void remove(Evento p) {
Transaction tx = session.beginTransaction();
session.delete(p);
tx.commit();
}
@SuppressWarnings("unchecked")
public List<Evento> lista(String ordem, Date datainicial, int max) {
// return session.createCriteria(Socio.class).list();
Criteria select = session.createCriteria(Evento.class);
select.addOrder(Order.asc(ordem));
select.add(Restrictions.ge("dataagendado", datainicial));
if (max != 0) {
select.setMaxResults(max);
}
List<Evento> dados = select.list();
return dados;
}
@SuppressWarnings("unchecked")
public List<Evento> listadestaque(String ordem) {
// return session.createCriteria(Socio.class).list();
Criteria select = session.createCriteria(Evento.class);
select.addOrder(Order.asc(ordem));
List<Evento> dados = select.list();
return dados;
}
public Evento localizar(Long id) {
Evento evento = new Evento();
evento = null;
try {
evento = (Evento) this.session.load(Evento.class, id);
} catch (HibernateException e) {
e.printStackTrace();
}
return evento;
}
}
Se alguem puder me dar uma luz eu agradeço… Obrigado
Gabriel Bittencourt