Eu resolvi criar um novo post, devido ao anterior está demasiadamente grande e o assunto é quase o mesmo, mas não totalmente. O que passa é que eu não consigo carregar nada que vem de meu bean em uma página jsf(XHTML). Fiz um método simples, e mesmo assim não carreguei nada. Aí vejo que o erro está comigo,óbvio, mas não consegui saber onde específicamente. Por isso peço a ajuda de vocês. Ainda estou no trampo dada a urgência de terminar isso. Vou colocar todos os meus arquivois envolvidos. Acho que o método está errado ou a chamada na página.
Meu MB
@ManagedBean(value="MostraEsc")
@SessionScoped
public class MostraEscolaAtiva {
private static final int List = 0;
private static final int Escola = 0;
private DataModel listaEscola;
private List<Escola> escolas;
public String getTeste() {
return teste;
}
public void setTeste(String teste) {
this.teste = teste;
}
public void handleToggle(ToggleEvent event) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Fieldset Toggled", "Visibility:" + event.getVisibility());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void setListaEscola(DataModel listaEscola) {
this.listaEscola = listaEscola;
}
public DataModel getListaEscola(){
List<Escola> lista = new EscolaDaoImp().list();
listaEscola = new ListDataModel(lista);
return listaEscola;
}
public List<Escola> getEscolas() {
return escolas;
}
public void setEscolas(List<Escola> escolas) {
this.escolas = escolas;
}
}
Meu DAO
public interface DAO<T> {
public void Inserir(T t);
public void Deletar(T t);
public void Atualizar(T t);
public List<T> list();
}
Minha DaoImp
public class EscolaDaoImp implements EscolaDAO{
private EntityManager em;
@Override
public Class<Escola> getEntityType() {
return Escola.class;
}
public List<Escola> list() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from Escola").list();
t.commit();
return lista;
}
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
protected EntityManager getEntityManager()
{
if (this.em == null)
throw new IllegalStateException("Erro");
return this.em;
}
@PersistenceContext
public void setEntityManager(EntityManager em) {
this.em = em;
}
public List<Escola> findAll() {
Query query = getEntityManager().createQuery("select distinct e.nome " +
"from " +
"pessoa p inner join professor f on (p.idpessoa = f.idpessoa) " +
"inner join matricula m on (m.idprofessor = f.idprofessor) " +
"inner join escola e on (e.idescola = m.idescola)" +
"where m.situacao = 'A'");
return (List<Escola>) query.getResultList();
}
}
Minha AbstractDAO
public abstract class AbstractDAO<T extends Object> implements DAO<T> {
@Override
public void Inserir(T obj) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.save(obj);
t.commit();
}
@Override
public void Deletar(T obj) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.delete(obj);
t.commit();
}
@Override
public void Atualizar(T obj) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.update(obj);
t.commit();
}
@Override
public List<T> list() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from "+getEntityType().getSimpleName()).list();
t.commit();
return lista;
}
protected abstract Class<T> getEntityType();
}
Meu Facelet(Somente a parte que eu preciso chamar a lista, ele é muito grande. Acho que é aí q tá a zica)
<h:form>
<p:graphicImage value="/Images/ico.jpg" />
<p:dataList value="#{MostraEsc.escolas}" var="escola" type="ordered">
#{escola.nome}
</p:dataList>
</h:form>
Meu Persistence.xml(Eu criei uma pasta na src chamada de META-INF e coloquei ele lá, está correto?)
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="EscolaDaoImp" -->> Dúvida aqui
transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.username" value="postgres" />
<property name="hibernate.connection.password" value="123" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5435/Testel" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
A porta do PostgreSql é 5435 e ele funciona muito bem, então não é esse o problema