初学hibernate 查找数据—问题记录

1.

root cause

java.lang.NoClassDefFoundError: Could not initialize class dao.HibernateUtil
	service.RcGroupService.getAllRecommandGrps(RcGroupService.java:32)
	view.GroupController.getReCommandGroups(GroupController.java:29)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
--检查项:服务器开启,数据库启动,查询数据可以。

--原因:没有配置hibernate.cfg.xml没有配好。

配置如下,就OK了。

2.

root cause

org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 64; 元素类型为 "class" 的内容不完整, 它必须匹配 "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*,(query|sql-query)*)"。
	com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
	com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
	com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
	com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
	com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
	com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1994)
	com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:769)
	com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:357)
检查要查询的表的**.hbm.xml发现没有问题,然后又去排查所有注册的hbm.xml文件,发现其中一个文件的<class>确实了结束符 </class>

以下是个例子



3.

root cause

org.hibernate.HibernateException: Unable to make JDBC Connection [jdbc:derby:spring_hibernate_2]
	org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:77)
	org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106)
	org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
	org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
	org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
	org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)
	org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)
	org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
	org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
	org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
	org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
	org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
	org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
	dao.HibernateUtil.<clinit>(HibernateUtil.java:18)
	service.RcGroupService.getAllRecommandGrps(RcGroupService.java:32)
	view.GroupController.getReCommandGroups(GroupController.java:29)
看错误信息是connection不上,url是从网上拷贝的,还没改成自己的本地数据库,

修改为:



4.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: No CurrentSessionContext configured!
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

org.hibernate.HibernateException: No CurrentSessionContext configured!
	org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1011)
	dao.HibernateUtil.getSession(HibernateUtil.java:32)
	service.RcGroupService.getAllRecommandGrps(RcGroupService.java:32)
	view.GroupController.getReCommandGroups(GroupController.java:29)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)

用的是sessionFactory.getCurrentSession()。网上查了一下,说是要在hibernate.cfg.xml里配置个东西<property name="current_session_context_class">jta</property>


5.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: No TransactionManagerLookup specified
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

org.hibernate.HibernateException: No TransactionManagerLookup specified
	org.hibernate.context.internal.JTASessionContext.currentSession(JTASessionContext.java:85)
	org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1013)
	dao.HibernateUtil.getSession(HibernateUtil.java:32)
	service.RcGroupService.getAllRecommandGrps(RcGroupService.java:32)
	view.GroupController.getReCommandGroups(GroupController.java:29)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

跟错误4一样,刚刚网上查的,是在集成Hibernate的环境里,用<property name="current_session_context_class">jta</property>,但是在没有集成hibernate的环境下用<property name="current_session_context_class">thread</property>

修改为:


6.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: getNamedQuery is not valid without active transaction
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

org.hibernate.HibernateException: getNamedQuery is not valid without active transaction
	org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:352)
	com.sun.proxy.$Proxy486.getNamedQuery(Unknown Source)
	service.RcGroupService.getAllRecommandGrps(RcGroupService.java:33)
	view.GroupController.getReCommandGroups(GroupController.java:29)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.springframework.web.method.support.InvocableHandle

说我没有开启事务,难道select也要事务?加上seesiom.beginTransaction ,查询后commit,就OK了。


-----------------------图片怎么都没了。。。。。。

补充:

hibernate.cfg.xml

<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
    <property name="connection.url">jdbc:derby://localhost:1527/sample</property>
    <property name="connection.username">app</property>
    <property name="connection.password">app</property>
    <property name="connection.pool_size">2</property>
    <property name="dialect">org.hibernate.dialect.DerbyDialect</property>
    <property name="show_sql">true</property>
    <property name="current_session_context_class">thread</property>
    <mapping resource="beanconfig/RcGroup.hbm.xml"/>
    <mapping resource="beanconfig/RcSubscriber.hbm.xml"/>
   <!-- <mapping resource="beanconfig/RcArtical.hbm.xml"/>-->
  </session-factory>
</hibernate-configuration>

其中一个表映射

<hibernate-mapping>
    <class name="value.RcGroup" table="rc_group"
         dynamic-insert="false" dynamic-update="false"
         mutable="true"  optimistic-lock="version" 
         polymorphism="implicit" select-before-update="false">     
           
        <id name="groupId"  column="GROUP_ID" type="java.lang.Integer">  
            <generator class="identity"/>  
        </id>  
        <property name="groupName" column="GROUP_NAME" type="java.lang.String" length="50" not-null="true"></property>  
        <property name="groupDesc" column="GROUP_DESC" type="java.lang.String"></property>  
        <property name="effDate" column="EFF_DATE" type="java.util.Date"  not-null="true"></property>
        <property name="remark" column="REMARK" type="java.lang.String"></property>         
    </class> 
    
    <sql-query name="QUERY_RCGROUP_GETALLGROUP_BY_GROUPIDLIST">   
        <return alias="t" class="value.RcGroup"></return>  
        <![CDATA[   
                 SELECT  
                 group.GROUP_ID AS {t.groupId},  
                 group.GROUP_NAME AS {t.groupName},  
                 group.GROUP_DESC AS {t.groupDesc},
                 group.EFF_DATE AS {t.effDate}, 
                 group.REMARK AS {t.remark} 
                 FROM  
                 RC_GROUP group
                 ORDER BY group.EFF_DATE DESC
        ]]>  
    </sql-query>
    
</hibernate-mapping>
 

7.

root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.ContentNegotiatingViewResolver#0' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Cannot create inner bean 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#3d7aa314' of type [org.springframework.web.servlet.view.json.MappingJacksonJsonView] while setting bean property 'defaultViews' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#3d7aa314' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.view.json.MappingJacksonJsonView]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
	org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:282)
	org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:121)
	org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:351)
	org.springframework.beans.factory.support.BeanDe

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#3d7aa314' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.view.json.MappingJacksonJsonView]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1021)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
	org.springfram

org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.view.json.MappingJacksonJsonView]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
	org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:164)
	org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
	or
java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
	org.springframework.web.servlet.view.json.MappingJacksonJsonView.<init>(MappingJacksonJsonView.java:65)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	sun.

前段时间返回json数据还OK的,今天怎么不行了。后来发现,之前引入的json的几个jar包都不在lib下了,重新引入,又OK了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值