No Persistence provider for EntityManager named default
14 respostas
S
santoro
Estou com JBoss7 e ao tentar encontrar o persistence unit estou recebendo o seguinte erro:
persistence.xml
<?xmlversion="1.0"encoding="UTF-8"?><persistenceversion="2.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_2_0.xsd"><persistence-unitname="default"transaction-type="JTA"><provider>org.hibernate.ejb.HibernatePersistence</provider><jta-data-source>java:jboss/datasources/testeDatasource</jta-data-source><properties><propertyname="hibernate.dialect"value="org.hibernate.dialect.Oracle10gDialect"/><propertyname="hibernate.check-valid-connection-sql"value="select 0 from dual"/></properties></persistence-unit></persistence>
Tem certeza que o persistence.xml está dentro do seu META-INF?
S
santoro
Primeiramente obrigado por responder, o persistence.xml está dentro da pasta META-INF dentro do src
em busca vi que um dos problemas poderia ser a falta do jar hibernate-entitymanager-3.6.7.Final.jar porém ao colocar ele em minha aplicação ocorre o seguinte erro no start do JBoss 7.0.2
Separei somente os jars conforme documentação que você me enviou, o meu persistence.xml ficou assim
<persistence-unitname="default"transaction-type="JTA"><provider>org.hibernate.ejb.HibernatePersistence</provider><jta-data-source>java:jboss/datasources/testeDatasource</jta-data-source><properties><propertyname="hibernate.dialect"value="org.hibernate.dialect.Oracle10gDialect"/><propertyname="hibernate.check-valid-connection-sql"value="select 0 from dual"/></properties></persistence-unit>
e mesmo assim o erro continua (o mesmo)
J
javax.skol
Estranho. Da uma olhada no .war ou no proprio target e vê se o depoloy do persistence foi feito de maneira correta(dentro do META-INF)… Muito estranho isso. Pensei também no datasource, mas pela mensagem de erro, acho que não seria, um outro motivo seria o nome do unit sendo chamado erroneamente, mas pelo que passou está certo, mais um motivo seria versões de bibliotecas incompatíveis, mas vc afirma que colocou as libs da mesma maneira da documentação…
S
santoro
Realmente até tentei utilizar as dependências disponibilizadas pela Caelum, mas o erro foi o mesmo
santoro, coloque seu datasource mais ou menos com esse nome MeudatasourceDS (primeira letra CAPS e terminando com DS). Já tive problemas com nomeclatura de DS no JBoss.
Outra coisa é a declaração seria:
<jta-data-source>[b]java:/[/b]MeudatasourceDS </jta-data-source> no seu caso, está apenas com java: e sem o /
Você está colocando seu datasource na pasta correta? na pasta de deploy?
S
santoro
Alterei meu datasource no nome que vc indicou e o erro continua o mesmo, para tentar simplificar fiz assim (mas o erro persiste)
persistence.xml em src/META-INF
e um servlet
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
EntityManagerem=Persistence.createEntityManagerFactory("default").createEntityManager();TypedQuery<Pessoa> query = em.createQuery("select p from Pessoa p",Pessoa.class);List<Pessoa> pessoas = query.getResultList();for(Pessoap:pessoas){
System.out.println(p.getNome());}
}
jar’s dentro do WEB-INF/lib
H
Hebert_Coelho
Essa sua linha ainda continua diferente da que eu postei:
Eu postei
Coloque seu datasource dentro da pasta deploy e depois escreva igual eu coloquei aí.
S
santoro
jakefrog criei um novo projeto seguindo o que falou e o erro permaneceu:
src/META-INF/persistence.xml
e fiz um servlet para teste
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
EntityManagerem=Persistence.createEntityManagerFactory("ConexaoJPA").createEntityManager();TypedQuery<Pessoa> query = em.createQuery("select p from Pessoa p",Pessoa.class);List<Pessoa> pessoas = query.getResultList();for(Pessoap:pessoas){
System.out.println(p.getNome());}
}
minhas libs
alguma sugestão???
H
Hebert_Coelho
Vc criou esse arquivo como? <jta-data-source>java:/MeudatasourceDS</jta-data-source>
S
santoro
No arquivo standalone.xml do jboss 7.0.2 inserir o seguinte código
publicstaticConnectiongetConexao(){DataSourceds=null;Connectioncon=null;InitialContextic;try{ic=newInitialContext();ds=(DataSource)ic.lookup("java:/MeudatasourceDS");con=ds.getConnection();}catch(Exceptione){System.out.println("Erro a pegar conexao: "+e.getMessage());e.printStackTrace();}returncon;}
retorna a conexão normalmente
H
Hebert_Coelho
Desse modo aí eu nunca vi. Geralmente no JBoss se cria um arquivo xml com os dados dentro da pasta deploy. Nesse caso aí seria MeuDatasource-ds.xml e dentro dele seria tipo:
<?xml version="1.0" encoding="UTF-8"?><datasources><local-tx-datasource><jndi-name>MeuDataSourceDS</jndi-name><connection-url>jdbc:postgresql://localhost:5432/nomadscity</connection-url><driver-class>org.postgresql.Driver</driver-class><user-name>postgres</user-name><password>postgres</password><!-- sql to call when connection is created. Can be anything, select 1 is valid for PostgreSQL <new-connection-sql>select 1</new-connection-sql> --><!-- sql to call on an existing pooled connection when it is obtained from pool. Can be anything, select 1 is valid for PostgreSQL <check-valid-connection-sql>select 1</check-valid-connection-sql> --><!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --><metadata><type-mapping>PostgreSQL7.2</type-mapping></metadata></local-tx-datasource></datasources>
Esse aí é o código da minha aplicação.
R
rbmurussi
No meu caso tava dando problema nas bibliotecas, que tava migrando do jdk1.6 para jdk1.7 deu uns probleminhas…