Unknown entity - [Resolvido]

Feras,

estou tentando persistir alguns dados no Banco de Dados porém estou recebendo a exceção abaixo,

esse erro acho que deveria acontecer se eu não tivesse minha entidade mapeada mas tenho segue abaixo minha configuração no Persistence.xml

	<persistence-unit name="portalEmailOracle" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/DefaultDS</jta-data-source>
		
		<class> br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO</class>
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
			<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@servidor:1521:DB"/>
			<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
		</properties>
	</persistence-unit>

e Minha entidade esta com as anotações necessarias

Erro:

14:34:48,582 ERROR [stderr] (http--127.0.0.1-8080-1) java.lang.IllegalArgumentException: Unknown entity: br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO

14:34:48,582 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:856)

14:34:48,582 ERROR [stderr] (http--127.0.0.1-8080-1) 	at br.com.getnet.portalsistemaretaguarda.generic.dao.GenericImplDAO.save(GenericImplDAO.java:40)

14:34:48,582 ERROR [stderr] (http--127.0.0.1-8080-1) 	at br.com.getnet.portalsistemaretaguarda.relatorio.decred.bo.RelPedidosBO.CadastrarPedido(RelPedidosBO.java:88)

14:34:48,582 ERROR [stderr] (http--127.0.0.1-8080-1) 	at br.com.getnet.portalsistemaretaguarda.relatorio.decred.delegate.RelPedidosDelegate.cadastrarPedido(RelPedidosDelegate.java:77)

14:34:48,582 ERROR [stderr] (http--127.0.0.1-8080-1) 	at br.com.getnet.portalsistemaretaguarda.relatorio.decred.mbean.RelPedidosMbean.cadastrarPedido(RelPedidosMbean.java:57)

14:34:48,583 ERROR [stderr] (http--127.0.0.1-8080-1) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

14:34:48,614 ERROR [stderr] (http--127.0.0.1-8080-1) 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

14:34:48,614 ERROR [stderr] (http--127.0.0.1-8080-1) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

14:34:48,614 ERROR [stderr] (http--127.0.0.1-8080-1) 	at java.lang.reflect.Method.invoke(Unknown Source)

14:34:48,614 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)

14:34:48,614 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)

14:34:48,629 ERROR [stderr] (http--127.0.0.1-8080-1) 	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)

14:34:48,629 ERROR [stderr] (http--127.0.0.1-8080-1) 	at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:78)

14:34:48,629 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:57)

14:34:48,629 ERROR [stderr] (http--127.0.0.1-8080-1) 	at javax.faces.component.UICommand.broadcast(UICommand.java:143)

14:34:48,645 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)

14:34:48,645 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)

14:34:48,645 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)

14:34:48,645 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)

14:34:48,645 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)

14:34:48,661 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)

14:34:48,661 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)

14:34:48,661 ERROR [stderr] (http--127.0.0.1-8080-1) 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:151)

14:34:48,661 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)

14:34:48,676 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)

14:34:48,676 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)

14:34:48,676 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

14:34:48,676 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)

14:34:48,676 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

14:34:48,676 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)

14:34:48,692 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

14:34:48,708 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

14:34:48,708 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)

14:34:48,708 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)

14:34:48,708 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)

14:34:48,708 ERROR [stderr] (http--127.0.0.1-8080-1) 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)

14:34:48,723 ERROR [stderr] (http--127.0.0.1-8080-1) 	at java.lang.Thread.run(Unknown Source)

Geralmente é seguido uma convencao de que, os pacotes levam nomes minusculos, e as classes que comecam com Maiusculo, no seu caso vou chutar no escuro,

java.lang.IllegalArgumentException: Unknown entity: br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO  

tire o ultimo PedidosTO, deixe somente 1, e poste a classe PedidosTO pra analisarmos.

Cade o mapeamento da sua entidade ?

Acho que tinha que colocar a tag mapping-class também no arquivo de properties.

Fera,

desculpe ai foi um erro meu ao postar mas esta assim:
br.com.portal.relatorio.decred.to.PedidosTO

e não assim como havia postado
br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO

eita, falta o user e o password tb =D

     <properties>  
        <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />  
        <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@servidor:1521:DB"/>  
        <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />  
        <property name="hibernate.show_sql" value="true" />  
        <property name="hibernate.format_sql" value="true" />  
    </properties> 

lele_vader

estou usando o Persistence.xml nesse arquivo a gente mapeia com a tag

o mapping-class seria se estivesse usando Hibernate

rof20004

quanto ao usuário isso esta mepeado no meu standalone.xml do Jboss não e necessario eu ter no Persistence.xml tb

Tem um espaço em branco dentro de sua tag, retire este espaço limpe o projeto e refaça o deploy e verifique se vai dar certo ?

<class> br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO</class> 

ok, voce verificou se o mapeamento da classe esta correto ? existe …PedidoTO.PedidoTO ?

Ah é.
não vi que era jpa.
Eu disse isso porque você não colocou no seu arquivo.

Mas essa classe aqui
br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO

está no class ou será que é uma entidade que deveria estar transiente e falta o @transient ?

O @transient onde eu sei seria uma anotação de uma determinada coluna q quando eu for persistir o dado no banco o valor dessa coluna não será persistido correto ?

se for isso tenho uma coluna conforme abaixo q a ideia e quando eu persistir os dados o valor dessa coluna seja uma sequence, e não recebe valores como os outros campos


    @Id  
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "ID_PEDIDO")
            private String idPedido;
	

Feras,

Retirei o espaço e tb conferi sim e o mapeamento esta correto

mas continua dando o mesmo erro após isto ?

Acho que isto deve te ajudar …

http://www.guj.com.br/java/253937-jpa–unknown-entity/2

Continua sim Fera

Aleksandro,

fiz uma verificação como no post q vc passou, e os nomes estão ok,

estou usando um GenericDAO na Persistencia,

conferi para ver se os nomes estão iguais principalmente as letras maiusculas e minisculas

e esta correto

hummmm, voce pode postar a classe PedidoTO ?

Segue

package br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import br.com.portal.generic.to.GenericEntityTO;

@Entity
@Table(name="PEDIDOS_DECRED")
@NamedQueries({
		@NamedQuery(name = "PedidosDecredTO", query = "SELECT pd FROM PedidosDecredTO pd where pd.dataDe = :dataDe and pd.dataAte = :dataAte"),
		@NamedQuery(name = "PedidosDecredTO.findAll", query = "SELECT pd FROM PedidosDecredTO pd") 
		})


public class PedidosDecredTO implements Serializable, GenericEntityTO{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/*
	 * Consulta Todos os pedidos Cadastrados através da data
	 */
	public static final String pesquisarbyData = "PedidosDecredTO";	
	/*
	 * Consulta Todos os pedidos Cadastrados
	 */
	public static final String pesquisarTodos = "PedidosDecredTO.findAll";

	
    @Id  
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "ID_PEDIDO")
	private long idPedido;
	
	@Column(name = "USUARIO_SOLICITANTE")
	private String usuarioSolicitante;
	
	@Column(name = "DATA_DE")
	private String dataDe;
	
	@Column(name = "DATA_ATE")
	private String dataAte;
	
	@Column(name = "STATUS")
	private String status;
	
	@Column(name = "DATA_PEDIDO")
	private String datapedido;
	
	@Column(name = "HORA_PEDIDO")
	private String horaPedido;
	
	@Column(name = "NOM_ARQUIVO")
	private String nomeArquivo;

	public long getIdPedido() {
		return idPedido;
	}

	public void setIdPedido(long idPedido) {
		this.idPedido = idPedido;
	}

	public String getUsuarioSolicitante() {
		return usuarioSolicitante;
	}

	public void setUsuarioSolicitante(String usuarioSolicitante) {
		this.usuarioSolicitante = usuarioSolicitante;
	}

	public String getDataDe() {
		return dataDe;
	}

	public void setDataDe(String dataDe) {
		this.dataDe = dataDe;
	}

	public String getDataAte() {
		return dataAte;
	}

	public void setDataAte(String dataAte) {
		this.dataAte = dataAte;
	}

	public void setDatapedido(String datapedido) {
		this.datapedido = datapedido;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getHoraPedido() {
		return horaPedido;
	}

	public void setHoraPedido(String horaPedido) {
		this.horaPedido = horaPedido;
	}

	public String getNomeArquivo() {
		return nomeArquivo;
	}

	public void setNomeArquivo(String nomeArquivo) {
		this.nomeArquivo = nomeArquivo;
	}

	public String getDatapedido() {
		return datapedido;
	}

	@Override
	public Serializable getIdentificador() {
		return getIdPedido();
	}
}

Estranho hein.

Já deu stop e start no servidor?

Tento apagar o mapeamento do persistence e gerar de novo, usando as ferramentas da IDE?

Agora que vi sua classe, não tá mapeada de forma errada?

Na sua entity, o nome seria : br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO.PedidosDecredTO, já no persistence, está br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO

Tenta colocar no persistence assim: br.com.portal.relatorio.pedidos.to.PedidosTO.PedidosTO.PedidosDecredTO.

Feras,

eu estava alterando alguns nomes e acho q causou algumas divergencias segue como esta meu persistence.xml

	<persistence-unit name="portalEmailOracle" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/DefaultDS</jta-data-source>
		
		<class>Minha Entidade aqui</class>
		
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
			<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@servidor:1521:DB"/>
			<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
		</properties>
	</persistence-unit>