Java Hibernate-没有名为的EntityManager的存在提供程序*
在互联网上浏览并尝试各种解决方案后,我来到这里寻求帮助 我有一个java项目,它在Mac上(部署在本地tomcat上)本地运行得非常好,但是当我尝试在Ubuntu服务器上部署相同的war时,请求抛出500,并带有以下跟踪:Java Hibernate-没有名为的EntityManager的存在提供程序*,java,mysql,hibernate,ubuntu,tomcat,Java,Mysql,Hibernate,Ubuntu,Tomcat,在互联网上浏览并尝试各种解决方案后,我来到这里寻求帮助 我有一个java项目,它在Mac上(部署在本地tomcat上)本地运行得非常好,但是当我尝试在Ubuntu服务器上部署相同的war时,请求抛出500,并带有以下跟踪: javax.servlet.ServletException: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PERSISTENCE: Provi
javax.servlet.ServletException: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PERSISTENCE: Provider named org.hibernate.jpa.HibernatePersistenceProvider threw unexpected exception at create EntityManagerFactory:
java.lang.NoSuchMethodError
java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1236)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:833)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:250)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:231)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:274)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:110)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at com.frusoft.schedulemanager.databaseaccess.BaseDao.<init>(BaseDao.java:25)
at com.frusoft.schedulemanager.databaseaccess.ClientDao.<init>(ClientDao.java:11)
这就是我实例化EntityManagerFactory的方式
if (emf == null)
emf = Persistence.createEntityManagerFactory("PERSISTENCE");
任何形式的帮助都将不胜感激 您必须告诉
JPA
您使用的是哪家JPA提供商
将org.hibernate.jpa.HibernatePersistenceProvider
添加到peristence.xml
中的peristenceUnit
:
<persistence-unit name="PERSISTENCE" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
...
</properties>
</persistence-unit>
org.hibernate.jpa.HibernatePersistenceProvider
...
问题在于
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
javax.persistence
持久性api
1.0.2
正在被hibernate覆盖。
我需要删除依赖项或设置与hibernate 5.x兼容的较新依赖项
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
javax.persistence
javax.persistence-api
2.2
在执行mvn安装之前,我还需要抛出mvn clean
命令,以生成.war,从而不再缓存依赖项
----------注---------
我仍然不清楚为什么这在我的本地机器(我在那里开发了这个后端)上能正常工作。看看这是否能帮助你:就是这样!我记得我以前试过,但没有成功。问题是,我需要在安装mvn之前执行mvn清理!在显式添加提供程序之后(尽管不需要),它仍然显示完全相同的错误。不过,这只发生在我拥有的Ubuntu VPS上,在本地运行很好!
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>