我正在尝试使用Intellij Idea上的Hibernate连接数据库。
Bean文件是基于Hibernate实体类自动生成的。
public class SirketEntityManagedBean {
private EntityManagerFactory myEntityManagerFactory;
public SirketEntityManagedBean() {
myEntityManagerFactory = Persistence.createEntityManagerFactory("NewPersistenceUnit");
}
}
这里是pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>VPNTest6</groupId>
<artifactId>VPNTest6</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>VPNTest6</groupId>
<artifactId>VPNTest6</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
</dependencies>
</project>
这里是hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:oracle:thin:@//X.XX.XX.XX:1521/PROD</property>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<mapping class="hib.OrtamEntity"/>
<mapping class="hib.SorumluEntity"/>
<mapping class="hib.SirketEntity"/>
<mapping class="hib.VpnkullaniciEntity"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
这里是persistence.xml:
<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:@//XX.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>
这里是stackTrace:
例外
javax.servlet.ServletException:无法初始化类 org.hibernate.ejb.Ejb3Configuration javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根本原因
java.lang.NoClassDefFoundError:无法初始化类 org.hibernate.ejb.Ejb3Configuration org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124) javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) beans.SirketEntityManagedBean。(SirketEntityManagedBean.java:40) sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) java.lang.Class.newInstance(Class.java:442) com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186) com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:100) com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71) org.apache.el.parser.AstValue.getValue(AstValue.java:161) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) org.primefaces.component.panelmenu.PanelMenu.getModel(PanelMenu.java:84) org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:108) javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903) javax.faces.render.Renderer.encodeChildren(Renderer.java:176) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:84) org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:71) org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49) javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899) com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451) com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
或者它可能与项目目录有关? persistence.xml是否在正确的目录中?
或者它是关于hibernate-annotations类的? 我已经检查了下面的问题并手动添加了hibernate-annotations jar但是没有用。 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.ejb.Ejb3Configuration