Olá pessoal,
estou tentando migrar um conjunto de classes utilizando mapeamento JPA para dentro do Tomcat e estou obtendo a seguinte seqüência de erros
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: org.hibernate.hql.ast.QuerySyntaxException: Classe is not mapped [select DISTINCT p from Classe p where p.abreviacao='RO']
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.persistence.PersistenceException: org.hibernate.hql.ast.QuerySyntaxException: Classe is not mapped [select DISTINCT p from Classe p where p.abreviacao='RO']
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:567)
org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:79)
org.apache.jsp.consultar_jsp._jspService(consultar_jsp.java:245)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
org.hibernate.hql.ast.QuerySyntaxException: Classe is not mapped [select DISTINCT p from Classe p where p.abreviacao='RO']
org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:267)
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3049)
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938)
org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:227)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:159)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:110)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1612)
org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:76)
org.apache.jsp.consultar_jsp._jspService(consultar_jsp.java:245)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.
o código JSP que possuo é o seguinte
<%@page session="true" %>
<%@page import="javax.persistence.EntityManager" %>
<%@page import="javax.persistence.EntityManagerFactory" %>
<%@page import="javax.persistence.Persistence" %>
<%@page import="model.Classe" %>
<%@page import="java.util.List" %>
<!--<%@page import="javax.servlet.http.HttpSession" %>-->
<%!private EntityManager em;%>
<%
try{
//HttpSession session = request.getSession(true);
//if ((em = (EntityManager) session.getAttribute("manager"))==null){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jurisprudenciaPersistenceUnit");
em = emf.createEntityManager();
em.getTransaction().begin();
//session.setAttribute("manager", em);
//}
List<Classe> list = em.createQuery(
"select DISTINCT p from Classe p where p.abreviacao='RO'")
.getResultList();
/*for (Classe c : list) {
out.println(c);
}*/
}finally{
/*if (em != null)
em.close();
*/
}
%>
Seguinte código equivalente ao código acima, mas usando JUnit na IDE Eclipse, funciona corretamente.
package model;
import static org.junit.Assert.assertEquals;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class ClasseTest {
private EntityManagerFactory emf;
private EntityManager em;
@Before
public void initEmfAndEm() {
// BasicConfigurator.configure();
Logger.getLogger("org").setLevel(Level.ERROR);
emf = Persistence
.createEntityManagerFactory("jurisprudenciaPersistenceUnit");
em = emf.createEntityManager();
}
@After
public void cleanup() {
if (em != null)
em.close();
}
@SuppressWarnings("unchecked")
@Test
public void findAll() {
//int numero = 3, ano = 2007, vara = 22;
em.getTransaction().begin();
// Processo proc;
List<Classe> list = em.createQuery(
"select DISTINCT p from Classe p")
.getResultList();
assertEquals(118, list.size());
}
}
o meu persistence.xml é este aqui
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
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">
<persistence-unit name="jurisprudenciaPersistenceUnit"
transaction-type="RESOURCE_LOCAL">
<class>model.Acordao</class>
<class>model.Processo</class>
<class>model.Classe</class>
<class>model.Juiz</class>
<class>model.Vara</class>
<properties>
<!--<property name="hibernate.archive.autodetection"
value="class" />-->
<property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.connection.driver_class"
value="oracle.jdbc.OracleDriver" />
<property name="hibernate.default_schema"
value="apadmin" />
<property name="hibernate.connection.url"
value="jdbc:oracle:thin:@192.168.0.28:1521:DSV" />
<property name="hibernate.connection.username"
value="apadmin" />
<property name="hibernate.connection.password"
value="admin" />
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Alguém sabe onde pode ser o problema?