Depois de criar um objeto do tipo EntityManagerFactory você precisa criar um objeto EntityManager: EntityManager entityManager = factory.createEntityManager();
E
edysnipes
Ops! Deu erro na hora de colar o erro!
O erro é esse:
NoPersistenceproviderforEntityManagernamedAgendaSPI[/code/Osnir eu crio o objeto conforme você disse. Mas o erro acontece aki:[code]EntityManagerFactoryfactory=Persistence.createEntityManagerFactory("AgendaSPI");
Eu li a documentação do EntityManager do Hibernate e acho que pode ter alguma coisa relacionada com essa configuração do persistence.xml
Basicamente é o seguinte, RESOURCE_LOCAL é quando você está executando JPA fora de um container Java EE, por exemplo, aplicações desktop. JTA é o contrário. Uma vez tive um problema parecido com esse, no meu caso estava faltando algumas lib’s do Hibernate (aqueles montes de jar’s que precisamos colocar para o funcionamento do Hibernate)
E
edysnipes
Ok! Entendi a diferença e creio que não está faltando nenhuma lib pois acho que o erro seria outro.
Uma vez que estou usando o Type = JTA qual a função dessa configuração:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("agenda");
EntityManager em = emf.createEntityManager();
Ao tentar utilizar um modelo do persistence.xml da documentação do hibernate entity manager tenho os seguintes erros de acordo com a marcação no persistence.xml postado acima:
Gostaria de uma força nisso pois já são três dias tentando resolver o problema.
As libs hibernate3.jar e /hibernate-jpa-2.0-api-1.0.0.Final.jar estão corretas!!
Aguardo ajuda!
O
Osnir
Olá edysnipes, a própria IDE cria o arquivo Persistence.xml, siga os passos abaixo e acredito que seus problemas serão resolvidos:
Primeiramente você precisa baixar o pacote Hibernate EntityManeger, em seguida coloque todas as lib’s desse pacote no seu projeto. Se estiver usando eclipse faça o seuinte:
Clique com botão direito sobre o projeto e selecione “Properties”, em seguida clique sobre a opção “Project Facets” no menu a esquerda e selecione “Java Persistence” em seguida clique em “Further configuration available…”;
Na opção “JPA implementation” selecione “Disable Library Configuration”, marque “Discover annotated classes automatically” na opção “Persistent class managente” e desmarque a opção “Create orm.xml” clique em OK e OK novamente. Com isso será criado seu arquivo persistence.xml;
Abra o arquivo persistence.xml e você verá abaixo algumas abas de configuração de arquivo, faça o seguinte:
Na aba “General” na opção “Presistence provider” coloque org.hibernate.ejb.HibernatePersistence
Na aba “Connection” na opção “Transaction type” selecione “Resorce Local”
Na aba “Hibernate” selecione as opções para configiração de conexão com banco (dialeto, driver, url essas coisas)
Pronto agora seu JPA deverá funcionar sem problemas.
Obs: Dependendo da versão do eclipse essas opções podem variar um pouco. Por exemplo: na versão atual do eclipse a aba “Hibernate” não existe e as configurações do banco são feitas na aba “Connection”.
É isso aí, espero ter ajudado.
P
partenon
Sei nao O erro diz que voce quer usar JPA 2.0, mas que ele soh reconhece JPA 1.0. Qual container/application server voce esta usando?
E
edysnipes
Tomcat 6
P
partenon
Qual versao de Hibernate voce esta usando? Pela mensagem de erro, a implementacao JPA entende apenas JPA 1.0, quando voce esta tentando usar JPA 2.0, mas vc diz que este erro esta na IDE, entao, eh possivel que nao seja a real causa.
O que vc precisa encontrar eh a causa do fato da PU “agenda” nao estar disponivel. A excecao que vc viu eh soh uma indicacao de que algo de errado aconteceu ao criar a PU, mas a real causa deve estar em outro log
Por via das duvidas, execute o comando abaixo e veja se o persistence.xml esta no lugar correto: