javax.persistence.PersistenceException:没有名为hibernate.cfg.xml的EntityManager的持久性提供程序

javax.persistence.PersistenceException:没有名为hibernate.cfg.xml的EntityManager的持久性提供程序,hibernate,jpa,persistence-provider,Hibernate,Jpa,Persistence Provider,我正在尝试使用Intellij Idea上的Hibernate连接数据库 Bean文件是基于Hibernate实体类自动生成的 public class SirketEntityManagedBean { private EntityManagerFactory myEntityManagerFactory; public SirketEntityManagedBean() { myEntityManagerFactory = Persistence.crea

我正在尝试使用Intellij Idea上的Hibernate连接数据库

Bean文件是基于Hibernate实体类自动生成的

public class SirketEntityManagedBean {

    private EntityManagerFactory myEntityManagerFactory;

    public SirketEntityManagedBean() {
        myEntityManagerFactory = Persistence.createEntityManagerFactory("hibernate.cfg.xml");
    }

    // ...
}
运行时,会引发以下异常:

javax.persistence.PersistenceException:没有名为hibernate.cfg.xml的EntityManager的持久性提供程序 persistence.persistence.createEntityManagerFactoryPersistence.java:69 persistence.persistence.createEntityManagerFactoryPersistence.java:47 SirketEntityManagedBean.SirketEntityManagedBean.java:40 sun.reflect.nativeConstructor附件mpl.newInstance0本机方法 sun.reflect.NativeConstructorAccessorImpl.newInstanceNativeConstructorAccessorImpl.java:62

sun.reflect.DelegatingConstructorAccessorImpl.newInstanceDelegatingConstructorAccessorImpl.java:45 java.lang.reflect.Constructor.newInstanceConstructor.java:423 java.lang.Class.newInstanceClass.java:442 com.sun.faces.mgbean.BeanBuilder.newBeanInstanceBeanBuilder.java:186 com.sun.faces.mgbean.BeanBuilder.buildBeanBuilder.java:100 com.sun.faces.mgbean.BeanManager.createAndPushBeanManager.java:409 com.sun.faces.mgbean.BeanManager.createBeanManager.java:269 com.sun.faces.el.ManagedBeanELResolver.resolveBeanManagedBeanELResolver.java:244 com.sun.faces.el.ManagedBeanELResolver.getValueManagedBeanELResolver.java:116 com.sun.faces.el.DemuxCompositeELResolver.\u getValueDemuxCompositeELResolver.java:176 com.sun.faces.el.DemuxCompositeELResolver.getValueDemuxCompositeELResolver.java:203 org.apache.el.parser.astiIdentifier.getValueAstiIdentifier.java:71 org.apache.el.parser.AstValue.getValueAstValue.java:161 org.apache.el.ValueExpressionImpl.getvalueexpressionimpl.java:184 com.sun.faces.facelets.el.TagValueExpression.getValueTagValueExpression.java:109 javax.faces.component.ComponentStateHelper.evalComponentStateHelper.java:194 org.primefaces.component.panelmenu.panelmenu.getModelPanelMenu.java:84 org.primefaces.component.menu.basemenurender.encodeEndbasemenurender.java:108 javax.faces.component.UIComponentBase.encodeEndUIComponentBase.java:919 javax.faces.component.UIComponent.encodeAllUIComponent.java:1903 javax.faces.render.Renderer.encodeChildrenRenderer.java:176 javax.faces.component.UIComponentBase.encodeChildrenUIComponentBase.java:889 org.primefaces.renderkit.corerender.renderChildCoreRenderer.java:84 org.primefaces.renderkit.CoreRenderer.renderChildrencerRenderer.java:71 org.primefaces.component.layout.LayoutUnitRenderer.encodeEndLayoutUnitRenderer.java:49 javax.faces.component.UIComponentBase.encodeEndUIComponentBase.java:919 javax.faces.component.UIComponent.encodeAllUIComponent.java:1903 javax.faces.component.UIComponent.encodeAllUIComponent.java:1899 javax.faces.component.UIComponent.encodeAllUIComponent.java:1899 javax.faces.component.UIComponent.encodeAllUIComponent.java:1899 com.sun.faces.application.view.FaceletViewHandlingStrategy.renderViewFaceletViewHandlingStrategy.java:451 com.sun.faces.application.view.MultiViewHandler.renderViewMultiViewHandler.java:131 com.sun.faces.lifecycle.RenderResponsePhase.executeRenderResponsePhase.java:120 com.sun.faces.lifecycle.Phase.doPhasePhase.java:101 java:219 javax.faces.webapp.FacesServlet.serviceFacesServlet.java:647 org.apache.tomcat.websocket.server.WsFilter.doFilterWsFilter.java:52

下面是persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="NewPersistenceUnit">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>hib.OrtamEntity</class>
        <class>hib.SorumluEntity</class>
        <class>hib.SirketEntity</class>
        <class>hib.VpnkullaniciEntity</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@//XXX.X.XX.XX:1521/PROD"/>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
            <property name="hibernate.connection.username" value="XXTEST"/>
            <property name="hibernate.connection.password" value="XXTEST"/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
这是项目目录:


这是如何导致的,我如何解决它?

这可能是因为bean的定义。您是否在xml配置文件中定义了bean定义?如果有,请检查配置文件上的类名。如果没有,请在类定义的顶部添加@ManagedBeanname=sirketEntity

像这样:

@ManagedBean(name = "sirketEntity")
public class SirketEntityManagedBean {

这可能是因为bean的定义。您是否在xml配置文件中定义了bean定义?如果有,请检查配置文件上的类名。如果没有,请在类定义的顶部添加@ManagedBeanname=sirketEntity

像这样:

@ManagedBean(name = "sirketEntity")
public class SirketEntityManagedBean {
createEntityManagerFactory方法采用持久化单元的名称。某些Hibernate配置文件Hibernate.cfg.xml不是持久性单元的名称。持久化单元在persistence.xml文件中指定。这在任何JPA文档中都有充分的描述,您显然没有读过

createEntityManagerFactory方法采用持久化单元的名称。某些Hibernate配置文件Hibernate.cfg.xml不是持久性单元的名称。持久化单元在persistence.xml文件中指定。这在任何JPA文档中都有充分的描述,您显然没有阅读过

createEntityManagerFactory方法将持久化单元作为参数。持久化单元如中所述 名为persistence.xml的文件和此文件应位于项目的类路径中

例如,如果持久化单元名为exampledb,则方法调用将为-

EntityManager工厂exDb= Persistence.createEntityManagerFactoryexampledb

也请参考问题参见persistence.xml的示例,createEntityManagerFactory方法将persistent单元作为参数。持久化单元在名为persistence.xml的文件中描述,该文件应位于项目的类路径中

例如,如果持久化单元名为exampledb,则方法调用将为-

EntityManager工厂exDb= Persistence.createEntityManagerFactoryexampledb


也请参考问题参见persistence.xml的示例

如果未调用init,那么它与PrimeFaces有何关系?日志中有错误吗?如果你在“开发模式”下运行这个应用程序,你认为它是一个bean呢?faces-config.xml?请创建一个堆栈跟踪,那么堆栈跟踪的哪个部分不清楚?您的标题错误,您的标记错误,但“错误更正”您有persistence.xml吗?我强烈感觉您的持久化单元名称不是hibernate.cfg.xml。您的配置不正确。如果有persistence.xml,请在此处发布。确保persistence.xml也是您的类路径。你们可以参考这个问题来获得更多的想法-我已经编辑了这个问题@Manish@Erdinc-我发布了这个问题的答案。您需要更改为CreateEntityManagerFactoryNewPersistenceUniti如果未调用init,那么它与PrimeFaces的关系如何?日志中有错误吗?如果你在“开发模式”下运行这个应用程序,你认为它是一个bean呢?faces-config.xml?请创建一个堆栈跟踪,那么堆栈跟踪的哪个部分不清楚?您的标题错误,您的标记错误,但“错误更正”您有persistence.xml吗?我强烈感觉您的持久化单元名称不是hibernate.cfg.xml。您的配置不正确。如果有persistence.xml,请在此处发布。确保persistence.xml也是您的类路径。你们可以参考这个问题来获得更多的想法-我已经编辑了这个问题@Manish@Erdinc-我发布了这个问题的答案。您需要更改为createEntityManagerFactoryNewPersistenceUnit