Erro no Hibernate - org.hibernate.MappingException: Unknown entity  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
bland
JavaEvangelist

Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline

Olá pessoal!

Estou com um probleminha que não estou conseguindo resolver. De antemão, estou utilizando JSF 1.2, Tomcat 6.0, Hibernate 3.3.0, o MySQL 5.1 e o RichFaces 3.3.0. No meu projeto eu estou utlizando a JPA e o Hibernate Annotations 3.4.

Pronto, vamos ao problema. Eu tenho configurados um arquivo web.xml (como segue abaixo) e dentro dele eu tenho um Filter, chamado de HibernateSessionFilter (como segue abaixo também).

-- web.xml:


-- HibernateSessionFilter (fiz o comentário do HibernateUtil para poder testar pelo ManagedBean):


E dentro desse filtro eu faço uma chamada a uma outra classe chamada HibernateUtil, que segue abaixo.

-- HibernateUtil:


Aí eu tenho o meu entity, chamado de Department (segue abaixo) e tenho o meu ManagedBean, chamado de DepartmentMB.

-- Department:


-- DepartmentMB:


Tenho, também, configurado o meu hibernate.cfg.xml e o meu faces-config.xml, que seguem abaixo.

-- hibernate.cfg.xml:


-- faces-config.xml:


Aí eu criei uma classe para gerar o meu banco de dados a partir das anotações chamada de DatabaseGenerator.

-- DatabaseGenerator:


E esta classe está funcionando perfeitamente. Consegui gerar uma tabela com o mesmo nome da entity.
E para testar a minha conexão com o banco de dados e as suas respectiva inserções e busca, eu criei uma classe chamada Stub. Executando esta classe, todas as informações funcionam, tanto a busca quanto a persistência.

-- Stub:


Ou seja, estou abrindo, nesse caso, a sessão do Hibernate na mão e fazendo o commit também na mão e tudo funciona perfeitamente. E abaixo tem o meu persistence.xml.

-- persistence.xml:


Então o grande problema é quando eu faço a chamada da minha página JSP para o meu ManagedBean (DepartmentMB) fazer a persistência do objeto Department, mais especificamente no método save, onde está estourando a exceção:

19/03/2009 10:11:12 javax.faces.event.MethodExpressionActionListener processAction
SEVERE: Received 'org.hibernate.MappingException' when invoking action listener '#{departmentMB.save}' for component 'j_id_jsp_290256474_10'
19/03/2009 10:11:12 javax.faces.event.MethodExpressionActionListener processAction
SEVERE: org.hibernate.MappingException: Unknown entity: br.com.monteirosti.guestcomment.entity.Department
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:580)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1365)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
at br.com.monteirosti.guestcomment.dao.Dao.save(Dao.java:33)
at br.com.monteirosti.guestcomment.managedbeans.DepartmentMB.save(DepartmentMB.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:6
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:8
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
at javax.faces.component.UICommand.broadcast(UICommand.java:372)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:316)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:291)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:24
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:461)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:11
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:276)
at org.ajax4jsf.Filter.doFilter(Filter.java:175)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.monteirosti.guestcomment.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

10:11:12,262 ERROR AjaxViewRoot:322 - Error processing faces event for the component register:j_id_jsp_290256474_10
javax.faces.event.AbortProcessingException: /department.jsp(34,3) '#{departmentMB.save}' org.hibernate.MappingException: Unknown entity: br.com.monteirosti.guestcomment.entity.Department
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:11
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:8
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
at javax.faces.component.UICommand.broadcast(UICommand.java:372)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:316)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:291)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:24
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:461)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:11
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:276)
at org.ajax4jsf.Filter.doFilter(Filter.java:175)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.monteirosti.guestcomment.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.MappingException: Unknown entity: br.com.monteirosti.guestcomment.entity.Department
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:580)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1365)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
at br.com.monteirosti.guestcomment.dao.Dao.save(Dao.java:33)
at br.com.monteirosti.guestcomment.managedbeans.DepartmentMB.save(DepartmentMB.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:6
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99)
... 31 more


Bem, acho que consegui mostrar todos os possíveis arquivos que possam estar com problemas. Se alguém tiver uma luz, eu agradeço. Já fiz alguns testes e nenhum resultado positivo.

O que é mais estranho é que a nível de aplicação "offline" tudo funciona, mas quando faço a aplicação rodar "online" está dando erros. Será que esse erro está acontecendo devido ao servidor de aplicação ser o Tomcat? Para rodar o Hibernate eu precisaria de um servidor de aplicação como o JBoss?

Enfim, estou meio perdido e não entendo porque não está funcionando.

Ficarei no aguardo.

Abraço e de antemão, obrigado!

http://www.twitter.com/almeidafabiano

Fabiano Almeida.
[MSN]
aeugenio
Debugger
[Avatar]

Membro desde: 04/03/2008 13:42:39
Mensagens: 56
Localização: Campinas/SP
Offline

Cara posso estar enganado mas eu senti falta na sua classe @Entity a tag @Table apontado para a tabela do banco de dados.
Onde vc faz essa relação ?

/peace.

-------
wow addicted.
bland
JavaEvangelist

Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline

Eugenio,

Essa anotação da Table não é necessária. Só seria necessário se o nome da tabela fosse diferente da sua entity.
E mesmo assim, eu mencionei que eu consegui fazer funcionar rodando a aplicação através da classe Stub.
Ou seja, não é problema com a entity. Parece ser algum problema de configuração.
Mesmo assim, obrigado.

http://www.twitter.com/almeidafabiano

Fabiano Almeida.
[MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team