iT邦幫忙

0

hibernate spring sessionfactory 一問

  • 分享至 

  • xImage

大家好, 小弟找了很久, 試過改不同properties , 路徑, persistence mapping 等等,
但都出現這個error

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: entity class not found: entity.TeacherEntity

applicationcontext.xml

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

        <property name="hibernateProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.MySQLDialect
                hibernate.show_sql=true
                hibernate.format_sql=true

            </value>
        </property>
        <property name="mappingLocations" value="classpath*:*.hbm.xml"></property>
    </bean>

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!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"/>-->
    <!--<property name="connection.driver_class"/>-->
    <!-- <property name="connection.username"/> -->
    <!-- <property name="connection.password"/> -->

    <!-- DB schema will be updated if needed -->
    <!-- <property name="hbm2ddl.auto">update</property> -->


    <!--  mysql密碼  -->

    <!--  mysql驅動  -->
    <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>

    <!--  mysql連線URL  -->
    <!--建議:mysql的url最好是這樣寫上,如果要連線遠端mysql,只需要把127.0.0.0.1的改為遠端mysql地址即可,這裡的zhibo 為資料庫名,後面跟上的一串為字串的編碼,建議都寫上-->
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testing_java</property>

    <!--  資料庫方言  -->
    <!--<property name="dialect">org.hibernate.dialect.MySQLDialect</property>-->
    <!--// 5.0之後使用的資料庫方言-->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <!--  顯示sql語句  -->
    <property name="show_sql">true</property>

    <!--  格式化sql語句  -->
    <property name="format_sql">true</property>

    <mapping class="entity.TeacherEntity" />


      <!--  根據需要建立資料庫  (這裡的操作是,如果資料庫中已經有這個表,就將這個表刪除掉,重新建立表格)-->
    <!--<property name="hbm2ddl.auto">create</property>-->
    <!--新增剛剛生成的對映類-->
    <!--<mapping class="com.hibernatedemo.dao.TbAreaEntity"></mapping>-->
  </session-factory>
</hibernate-configuration>

Teacher.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="entity">
    <class name="TeacherEntity" table="teacher">
        <id name="id" type="java.lang.Integer">
            <generator class="assigned"></generator>
        </id>

        <property name="name" type="java.lang.String"></property>

    </class>

</hibernate-mapping>

tomcat 出了這個

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: entity class not found: entity.TeacherEntity
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
		at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
		at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
		at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
		at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
		at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:753)
		at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
		at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
		at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
		at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
		at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
		at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4763)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5232)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
		at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1775)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
		at java.lang.reflect.Method.invoke(Unknown Source)
		at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:291)
		at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
		at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
		at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:483)
		at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
		at java.lang.reflect.Method.invoke(Unknown Source)
		at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:291)
		at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
		at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
		at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(Unknown Source)
		at javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown Source)
		at javax.management.remote.rmi.RMIConnectionImpl.access$300(Unknown Source)
		at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown Source)
		at java.security.AccessController.doPrivileged(Native Method)
		at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown Source)
		at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown Source)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
		at java.lang.reflect.Method.invoke(Unknown Source)
		at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
		at sun.rmi.transport.Transport$2.run(Unknown Source)
		at sun.rmi.transport.Transport$2.run(Unknown Source)
		at java.security.AccessController.doPrivileged(Native Method)
		at sun.rmi.transport.Transport.serviceCall(Unknown Source)
		at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(Unknown Source)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(Unknown Source)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(Unknown Source)
		at java.security.AccessController.doPrivileged(Native Method)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
		at java.lang.Thread.run(Unknown Source)
	Caused by: org.hibernate.MappingException: entity class not found: entity.TeacherEntity
		at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:132)
		at org.hibernate.tuple.PropertyFactory.getGetter(PropertyFactory.java:323)
		at org.hibernate.tuple.PropertyFactory.buildIdentifierAttribute(PropertyFactory.java:63)
		at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:141)
		at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:509)
		at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
		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.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
		at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
		at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:346)
		at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
		at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
		at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:416)
		at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:401)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
		... 61 more
	Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [entity.TeacherEntity]
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
		at org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:62)
		at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:127)
		... 80 more
	Caused by: java.lang.ClassNotFoundException: Could not load requested class : entity.TeacherEntity
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)
		at java.lang.ClassLoader.loadClass(Unknown Source)
		at java.lang.ClassLoader.loadClass(Unknown Source)
		at java.lang.Class.forName0(Native Method)
		at java.lang.Class.forName(Unknown Source)
		at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)
		... 82 more
08-Oct-2021 16:02:17.482 ���� [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
08-Oct-2021 16:02:17.483 ���� [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [/untitled2_war_exploded] startup failed due to previous errors
08-Oct-2021 16:02:17.493 霅血�� [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [untitled2_war_exploded] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
[2021-10-08 04:02:17,501] Artifact untitled2:war exploded: Error during artifact deployment. See server log for details.
08-Oct-2021 16:02:21.949 鞈�� [Abandoned connection cleanup thread] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
	java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
		at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1435)
		at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1060)
		at com.mysql.jdbc.AbandonedConnectionCleanupThread.checkContextClassLoaders(AbandonedConnectionCleanupThread.java:90)
		at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:63)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
		at java.lang.Thread.run(Unknown Source)
08-Oct-2021 16:02:24.255 鞈�� [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Users\cccheung\Desktop\apache-tomcat-8.5.71\webapps\manager]
08-Oct-2021 16:02:24.294 鞈�� [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Users\cccheung\Desktop\apache-tomcat-8.5.71\webapps\manager] has finished in [39] ms

真的不知道漏了什麼, 希望幫忙, 謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
bsexp301479
iT邦新手 3 級 ‧ 2021-10-08 16:28:45

剛剛看了一下
是不是沒有把Teacher.hbm.xml給mapping進去hibernate.cfg.xml

給你參考一下
https://openhome.cc/Gossip/HibernateGossip/FirstHibernate.html

我要發表回答

立即登入回答