Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在web应用程序中找不到持久性单元_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 在web应用程序中找不到持久性单元

Java 在web应用程序中找不到持久性单元,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,堆栈跟踪: Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named Sample at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61) at javax.persistence.Persistence.createEntityMana

堆栈跟踪:

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named Sample
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
    at cm.cvs.service.UserInfoService.<init>(UserInfoService.java:32)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    ... 24 more
原因:javax.persistence.PersistenceException:没有名为Sample的EntityManager的持久性提供程序
位于javax.persistence.persistence.createEntityManagerFactory(persistence.java:61)
位于javax.persistence.persistence.createEntityManagerFactory(persistence.java:39)
位于cm.cvs.service.UserInfoService。(UserInfoService.java:32)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.springframework.beans.BeanUtils.InstanceClass(BeanUtils.java:147)
... 还有24个
使用的罐子:

将persistence.xml放在META-INF文件夹下。

Persistence.xml

<provider>javax.persistence.spi.PersistenceProvider</provider>


在persistence.xml中,我已经给出了provider属性。

在web应用程序项目下执行JPA时,将persistence.xml放在“src/META-INF”路径中,并从persistence.xml中删除下面的一行

<provider>javax.persistence.spi.PersistenceProvider</provider>
javax.persistence.spi.PersistenceProvider
注意:META-INF文件夹是在src文件夹下新创建的

已从此获取引用以解决错误

首先,我尝试创建一个简单的JavaJPA应用程序来检查我是否也得到了同样的结果

但效果很好。当我用web应用程序persistence.xml替换java application persistence.xml时,那一次它抛出了相同的错误


在比较了persistence.xml和persistence.xml之后,我从web应用程序的persistence.xml中删除了行“javax.persistence.spi.PersistenceProvider”,并将其保存在src/META-INF下,然后它就可以正常工作了。

WTF是“provider”吗?您应该在那里指定JPA提供者的实现类,而不是接口。那么定义DataNucleus使用的实现?日食?冬眠?OpenJPA?并在他们的文档中查找提供者名称@ChristianW的可能副本,它不是副本。从“没有为EntityManager命名的持久性提供程序”的答案中,我已经使用了这个答案来解决它。但它仍然不起作用。因此,在您当前的persistence.xml中,您使用org.hibernate.ejb.HibernatePersistence作为实现,而不是javax.persistence.spi.PersistenceProvider?现在问题得到解决,我的persistence.xml中没有使用provider标记,这完全忽略了根本原因。。。为您选择的JPA提供者输入正确的“提供者”值。只有在类路径中只有一个提供程序时,才能放置“provider”元素。一旦您有多人在场,此“解决方案”就会失败