Eu tenho o meu persistence.xml
com o mesmo nome usando TopLink
sob o META-INF
diretório Então, eu tenho meu código chamando-o com:
EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");
No entanto, recebi a seguinte mensagem de erro:
2009-07-21 09: 22: 41,018 [main] ERRO - Nenhum provedor de persistência para o EntityManager chamado agisdb javax.persistence.PersistenceException: nenhum provedor de persistência para EntityManager chamado agisdb em javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89) em javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60)
Aqui está o persistence.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="agisdb">
<class>com.agis.livedb.domain.AddressEntity</class>
<class>com.agis.livedb.domain.TrafficCameraEntity</class>
<class>com.agis.livedb.domain.TrafficPhotoEntity</class>
<class>com.agis.livedb.domain.TrafficReportEntity</class>
<properties>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
Deveria estar no caminho de classe. No entanto, eu recebi o erro acima.
java
jpa
persistence
toplink
Robert A Henru
fonte
fonte
<provider/>
, enquanto estiver usando o hibernate-4, você deve mudar seu provedor<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
, consulte stackoverflow.com/questions/23041964/… .Coloque o
"hibernate-entitymanager.jar"
no caminho de classe do aplicativo.Para versões mais recentes, você deve usar em
"hibernate-core.jar"
vez do obsoletohibernate-entitymanager
Se você estiver executando algum IDE, como o Eclipse :
Project Properties -> Java Build Path -> Libraries.
Caso contrário, coloque-o no
/lib
aplicativo.fonte
org.hibernate
artefato de grupohibernate-entitymanager
org.eclipse.persistence.jpa
com teste de escopo.Verifique se o
persistence.xml
arquivo está no diretório:<webroot>/WEB-INF/classes/META-INF
fonte
Eu precisava disso no meu arquivo pom.xml:
fonte
Enfrentou o mesmo problema e não conseguiu encontrar a solução por um longo tempo. No meu caso, ajudou a substituir
com
Tomou a solução daqui
fonte
Há outro ponto: se você enfrentar esse problema em um ambiente Eclipse RCP, poderá ser necessário alterar a geração do Factory de
Persistence.createEntityManagerFactory
paranew PersistenceProvider().createEntityManagerFactory
veja ECF para uma discussão detalhada sobre isso.
fonte
Talvez você tenha definido um provedor como,
<provider>org.hibernate.ejb.HibernatePersistence</provider>
mas fazendo referência a outro no jar. Isso aconteceu comigo: meu provedor persistence.xml era openjpa, mas eu estava usando o eclipselink no meu caminho de classe. Espero que esta ajuda!fonte
Conselho rápido:
Com o uso do JPA no aplicativo independente (fora do JavaEE), um provedor de persistência precisa ser especificado em algum lugar. Isso pode ser feito de duas maneiras que eu conheço:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
(conforme descrito na resposta correta de Chris: https://stackoverflow.com/a/1285436/784594 )No meu caso, descobri que, devido a uma configuração incorreta, o jar do hibernate-entitymanager não foi incluído como uma dependência, mesmo que fosse uma dependência transitória de outro módulo.
fonte
Se você estiver usando o Eclipse, verifique se o padrão de exclusão não remove as
persistence.xml
pastas de origem no caminho de construção.MyProject/src/main/java -> Excluded: <your_pattern>
nó da árvore
Excluded: (None)
o selecionando o nó e clicando no botão Editar ... à esquerda.fonte
Estou alguns anos atrasado para a festa aqui, mas acertei a mesma exceção ao tentar fazer o Hibernate 3.5.1 trabalhar com HSQLDB e um programa JavaFX para desktop. Consegui trabalhar com a ajuda deste tópico e com muitas tentativas e erros. Parece que você recebeu esse erro para uma variedade de problemas:
Tentei criar os exemplos de tutorial de hibernação, mas como estava usando o Java 10, não consegui fazê-los construir e executar facilmente. Desisti disso, não querendo perder tempo resolvendo seus problemas. Configurar um arquivo module-info.java (Jigsaw) é outra bola de cabelo que muitas pessoas ainda não descobriram.
Um pouco confuso é que esses (abaixo) eram os únicos dois arquivos que eu precisava no meu arquivo build.gradle. A documentação do Hibernate não está clara sobre exatamente quais Jars você precisa incluir. O gerenciador de entidades estava causando confusão e não é mais necessário na versão mais recente do Hibernate, nem o javax.persistence-api. Observe que estou usando o Java 10 aqui, então tive que incluir o jaxb-api, para solucionar alguns erros de ligação ao xml, além de adicionar uma entrada para o módulo de persistência java no meu arquivo module-info.java.
Build.gradle
Module-info.java
Com o hibernate 5.3.1, você não precisa especificar o provedor abaixo no seu arquivo persistence.xml. Se não for fornecido, o provedor de hibernação é escolhido por padrão.
O arquivo persistence.xml deve estar localizado no diretório correto para:
Percorrer o código-fonte de hibernação no depurador Intellij, onde verifica um dialeto, também lançou a mesma exceção, devido a uma propriedade de dialeto ausente no arquivo persistence.xml. Eu adicionei isso (adicione o correto para o seu tipo de banco de dados):
Eu ainda recebi a mesma exceção depois disso, portanto, percorrer o depurador novamente no Intellij revelou que a entidade de teste que eu estava tentando persistir (exemplo simples de pai e filho) tinha anotações ausentes para os relacionamentos OneToMany, ManyToOne. Corrigi isso e a exceção foi embora e minhas entidades foram mantidas ok.
Aqui está meu persistence.xml final completo:
Eu provavelmente desperdicei cerca de meio dia nesta jóia. Meu conselho seria começar muito simples - uma única entidade de teste com um ou dois campos, pois parece que essa exceção pode ter muitas causas.
fonte
Caixa de canto: se você estiver usando o m2Eclipse, ele exclui automaticamente as pastas de recursos. Então, ao tentar executar testes dentro do eclipse, a subsequente ausência de persistence.xml produzirá esse erro.
fonte
Verifique se você criou o arquivo persistence.xml na pasta 'src'. Eu criei na pasta do projeto e esse foi o meu problema.
fonte
Se você estiver usando o Maven, pode ser que ele não esteja procurando o local certo para a pasta META-INF. Outros mencionaram a cópia da pasta, mas outra maneira que funcionou para mim foi dizer ao Maven onde procurar, usando a
<resources>
tag. Consulte: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.htmlfonte
Isso acontece quando o gerente da entidade está tentando apontar para muitas unidades de persistência. Execute os seguintes passos:
fonte
Eu enfrentei o mesmo problema, mas no EclipseLink versão 2.5.0 .
Resolvi meu problema adicionando outro arquivo jar que era necessariamente ( javax.persistence_2.1.0.v201304241213.jar.jar );
Frascos necessários:
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (dependendo do banco de dados usado).
Eu espero que isso ajude.
fonte
Eu também tive esse erro, mas o problema era o uri do espaço para nome no
persistence.xml
.Troquei
http://xmlns.jcp.org/xml/ns/persistence
ahttp://java.sun.com/xml/ns/persistence
ea versão 2.1 para 2.0.Agora está funcionando.
fonte
Você precisa adicionar o hibernate-entitymanager-x.jar no caminho de classe.
No Hibernate 4.x, se o jar estiver presente, não será necessário adicionar o arquivo org.hibernate.ejb.HibernatePersistence no arquivo persistence.xml.
fonte
A pergunta já foi respondida, mas só queria postar uma dica que estava me segurando. Esta exceção estava sendo lançada após erros anteriores. Eu estava entendendo isso:
Embora eu tenha alterado o persistence.xml para incluir o novo nome da propriedade:
Após a mensagem sobre o nome da propriedade preterida, eu estava recebendo a mesma PersistenceException como acima e toda uma outra seqüência de exceções. Minha dica: verifique o início da salsicha de exceção.
Parece haver um bug no Glassfish v2.1.1 em que as reimplanta ou desimplanta e implanta não estão atualizando o persistence.xml, que está sendo armazenado em cache em algum lugar. Eu tive que reiniciar o servidor e funcionou.
fonte
Em um contexto OSGi, é necessário listar suas unidades de persistência no MANIFEST.MF do pacote, por exemplo
Caso contrário, o pacote JPA não saberá que seu pacote contém unidades de persistência.
Consulte http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE .
fonte
Você precisa dos seguintes arquivos jar no caminho de classe:
fonte
Eu apenas copiei o META-INF no src e trabalhei!
fonte
Arquivos de Jar do Hibernate 5.2.5 Requeridos no caminho da classe. Isso está dentro de uma pasta necessária da versão final do Hibernate 5.2.5. Pode ser baixado em http://hibernate.org/orm/downloads/
Crie um arquivo xml "persistence.xml" em
YourProject / src / META-INF / persistence.xml
persistence.xml
EntityManagerFactor = Persistance.createEntityManagerFactory ("amostra"); . "amostra" pode ser alterado conforme sua convenção de nomenclatura.
Agora crie uma classe de entidade. com o nome conforme meu exemplo UserDetail, no pacote org.pramod.data.object
UserDetail.java
Agora crie uma classe com o método principal.
HibernateTest.java
A saída será
fonte
No meu caso, anteriormente eu uso o idea para gerar entidade pelo esquema do banco de dados, e o
persistence.xml
é gerado automaticamentesrc/main/java/META-INF
e, de acordo com https://stackoverflow.com/a/23890419/10701129 , movo-o parasrc/main/resources/META-INF
, também marcado META-INF como raiz de origem. Funciona para mim.Mas simplesmente marcar o META-INF original (ou seja, src / main / java / META-INF) como raiz de origem não funciona, o que me confunde.
e este é o estrutura:
fonte
Se houver nomes diferentes em
Persistence.createEntityManagerFactory("JPAService")
classes diferentes, você receberá o erro. Ao refatorar, é possível obter nomes diferentes, como no meu caso. Em uma das aulas da auto-geradoPersistence.createEntityManagerFactory("JPAService")
emprivate void initComponents()
, classe ContactsTable diferiamPersistence.createEntityManagerFactory("JPAServiceExtended")
na classe DBManager.fonte
O meu foi resolvido adicionando informações no persistence.xml, por exemplo,
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
e certificando-se de que você tenha a biblioteca no caminho de classe, por exemplo, no Maven, adicione dependência comofonte
Verifique o nome da unidade peristente
fonte
No meu caso, tratava-se de erro em duas propriedades, como abaixo. Quando os alterei 'O provedor sem persistência para o EntityManager chamado' desapareceu.
Portanto, você pode tentar testar a conexão com suas propriedades para verificar se tudo está correto.
Erro estranho, fiquei totalmente confuso por causa disso.
fonte
Tentar também copiar o persistence.xml manualmente para a pasta
<project root>\bin\META-INF
. Isso corrigiu o problema no Eclipse Neon com oEclipseLink 2.5.2
uso de um projeto de plug-in simples.fonte
Teve o mesmo problema, mas isso realmente funcionou para mim:
Nota: O comando maven acima irá reinstalar todas as dependências do seu projeto a partir do zero. Seu console será carregado com logs detalhados devido à solicitação de rede que o maven está fazendo.
fonte