Entity not mapped! [RESOLVIDO]

7 respostas
danielfigueiredoc

Olá pessoal!

Mas uma vez vou recorrer a vocês, estou usando seam jbpm e hibernate na minha aplicação, e todas as entidades funcionam normalmente, porém ultimamente precisei fazer umas coisas automaticas e começei a usar o quartz com as crons, nele eu não consigo enxergar o entityManager nem nada que o seam já fornece, então fui pelo caminho das pedras eu chamei o Persistence.createEntityManagerFactory e depois dele consegui pegar o entityManager.
Testando a classe sem subir o servidor, ela funcionou normal só que meu persistence.xml apontava pra um RESOURCE_LOCAL ao invés do arquivo DataSource.xml com JTA.
Funcionou belza, porém qnd eu subo o Jboss e volto o persistence.xml ao normal:

<persistence-unit name="SGS1PersistenceUnit" transaction-type="JTA">  
      <provider>org.hibernate.ejb.HibernatePersistence</provider>  
      <jta-data-source>java:/SGS1DataSource</jta-data-source>  
      <properties>  
            <property name="hibernate.dialect"  
                      value="org.hibernate.dialect.PostgreSQLDialect" />  
            <property name="hibernate.show_sql"   
                      value="true" />  
            <property name="hibernate.format_sql"   
                      value="false" />  
            <property name="hibernate.transaction.manager_lookup_class"  
                      value="org.hibernate.transaction.JBossTransactionManagerLookup" />  
            <property name="hibernate.default_schema"   
                      value="core" />  
              
            <property name="hibernate.default_batch_fetch_size"   
                      value="16" />    
            <property name="hibernate.max_fetch_depth"   
                      value="2" />                 
                  
            <property name="hibernate.search.default.directory_provider"  
                      value="org.hibernate.search.store.FSDirectoryProvider" />  
   
            <property name="jboss.entity.manager.factory.jndi.name"   
                      value="java:/SGS1PersistenceUnit"/>   
      </properties>  
   </persistence-unit>

a cron sobe, o método a chamado, ele obtem o entityManager, e na hora que eu realizo qualquer operação com ele, como um query eu recebo uma exceção:

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Procedimento is not mapped [select o from Procedimento o]

meu entity:
@Entity  
@Table(name="tb_procedimento", schema="client")  
public class Procedimento implements java.io.Serializable {  
  
    private static final long serialVersionUID = 1L;  
  
    private Integer idProcedimento;  
  
(......)

alguém tem alguma idéia?
Porque o entityManager consegue achar as classes no resource local e qnd eu subo com um dataSource ele não acha, mas se eu entrar nas paginas normais, onde existe o context do seam e tudo mais ele funciona perfeitamente. Porém quando eu tento criar ele não vai, eu já tentei pegar o entityManager do seam, mas não é possível faze-lo.

Qualquer ajuda é bem vindo, i'm lost

obrigado!

7 Respostas

romarcio

Você indicou para o Hibernate onde estão os mapeamentos das classes, ou no seu caso, as anotações ?

danielfigueiredoc

Precisa fazer isso? porque isso não é aqueles hbm? Porque acho que com JPA nao precisa. Ao menos a aplicação toda funciona assim, se precisa poderia me dizer aonde eu coloco? desconheço essa configuração.

romarcio

Sim, precisa.

Tenta assim, vamos ver se funciona:

&lt;persistence-unit name="SGS1PersistenceUnit" transaction-type="JTA"&gt;  
    &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;  
    &lt;jta-data-source&gt;java:/SGS1DataSource&lt;/jta-data-source&gt;  
  
	&lt;class&gt;local.da.sua.classe.Procedimento&lt;/class&gt;  

	&lt;properties&gt;  
        &lt;property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /&gt;  
        &lt;property name="hibernate.show_sql" value="true" /&gt;  
        &lt;property name="hibernate.format_sql" value="false" /&gt;  
        &lt;property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" /&gt;  
        &lt;property name="hibernate.default_schema" value="core" /&gt;  
              
        &lt;property name="hibernate.default_batch_fetch_size" value="16" /&gt;    
        &lt;property name="hibernate.max_fetch_depth" value="2" /&gt;                 
                  
        &lt;property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" /&gt;  
   
        &lt;property name="jboss.entity.manager.factory.jndi.name" value="java:/SGS1PersistenceUnit"/&gt;   
    &lt;/properties&gt;  
&lt;/persistence-unit&gt;
danielfigueiredoc

Se eu coloco o ele diz que não consegue encontrar meu JNDI com o persistenceUnit SGS1PersistenceUnit
=/

romarcio

danielfigueiredoc:
Se eu coloco o ele diz que não consegue encontrar meu JNDI com o persistenceUnit SGS1PersistenceUnit
=/

Bah, dai não sei o que te dizer. Não costumo usar JPA com Hibernate, então não sei muita coisa sobre isso.

Mas pelo erro que dava antes, ele não encontrava a entidade, então tem que ter alguma outra maneira de passar isso para o hibernate.

danielfigueiredoc

Resolvi de outra forma, peguei o dataSource por lookup passando o jNDI todo java:/DataSourceName do xml.,
Dai funcionou o entityManager, porém você não precisa ficar abrindo e dando commit nas transações, ele já está sempre com ela aberta.

Obrigado.

G

Oi, estou com um problema parecido com o seu, vc poderia postar a parte do código que pega o EntityManager?

Criado 10 de setembro de 2010
Ultima resposta 4 de mai. de 2011
Respostas 7
Participantes 3