já tentamos várias vezes que não encontramos para resolver a problemas que não recupera os dados e apareceu mensagem de erros…
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.apache.jsp.MostraTela_jsp._jspService(MostraTela_jsp.java:72)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.
Controlador
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
SessionFactory sf = (new AnnotationConfiguration().configure("/cpg/hibernate.cfg.xml")).buildSessionFactory();
Session sessao = sf.openSession();
SQLQuery query = sessao.createSQLQuery("SELECT * From Cliente");
query.addEntity(Cliente.class);
List<Cliente> res = query.list();
request.setAttribute("res",res);
RequestDispatcher rd = request.getRequestDispatcher("MostraTela.jsp");
rd.forward(request, response);
}
MostraTela.jsp
[code]
<%
List lista = (List) request.getAttribute("res");
%>
Faz como LPJava exemplificou, usa o HQL e não SQL.
NO createSqlQuery ele retorna uma lista, mas dai vc passa a trabalhar com tabelas e não objetos, tem que ver se o seu banco não diferencia letras maiúsculas de minúsculas, esse é dos problemas que podem ocorrer em trabalhar com tabelas.
E no createSqlQuery o retorno é um objeto Query e não SQLQuery, tipo assim:Query query = sess.createSQLQuery("SELECT * FROM CLIENTES").addEntity(Cliente.class);
Você debugou para ver se sua consulta realmente retorna dados?
hm eu pouco trabalhei com SQLQuery com hibernate so quando o banco nao dava suporte, mas os mais tradicionais fazem isso. Agora esse questao do case-sensitive é importante há bancos que enchem o saco com isso, o mysql, foi o mais liberal que já usei a respeito disso e outros pontos, e o mais chato foi o db2. hehe
[quote=LPJava]so um detalhe, pq está usando SQLQuery? é de fato necessario? se nao estou equivocado sqlquery ele retorna um array de Object e nao uma List.
tenta ai:
Query query = session.createQuery("from Cliente");
List<Cliente> lista = query.list();
flw.[/quote]
Já testamos as duas e nem funcionou nenhum… as mesmas mensagem de erro que mostrei antes…
Na época da faculdade em uma matéria de banco de dados, nós usamos o PostgreSql e ele tinha esse caso do case-sensitive, não se ainda tem nas novas versões, mas era muito ruim. Quando era o cara que criava o banco e as tabelas tudo bem, mas quando era outro colega e o cara ia mexer, começava a dar problemas e o cara ainda muito “cru”, demora pra perceber o que era, hehe.
debug nele, que tu vai descobrir o pq ele ta recebendo aquela excecao e ao mesmo tempo é uma forma de aprender o que nem sempre encontramos nos livros e só vai qdo está nesse sofrimento terrivel que eh ver erros de code.