SSH阶段常见的异常系列之一hibernate(15条)

异常一

异常一 
异常描述: Sax解析异常:cvc-复杂的类型,发现了以元素maping开头的无效内容,应该是以 
‘{“http://www.hibernate.org/xsd/orm/cfg“:property, “http://www.hibernate.org/xsd/orm/cfg“:mapping, “http://www.hibernate.org/xsd/orm/cfg“:class-cache, “http://www.hibernate.org/xsd/orm/cfg“:collection-cache, “http://www.hibernate.org/xsd/orm/cfg“:event, “http://www.hibernate.org/xsd/orm/cfg“:listener}’ 
几种之一开头。 
在使用hibernate框架存取数据的过程中,使用单元测试,后台报错 
异常信息: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:192) 
Caused by: javax.xml.bind.UnmarshalException 
- with linked exception: 
[org.xml.sax.SAXParseException; cvc-complex-type.2.4.a: 发现了以元素 ‘maping’ 开头的无效内容。应以 ‘{“http://www.hibernate.org/xsd/orm/cfg“:property, “http://www.hibernate.org/xsd/orm/cfg“:mapping, “http://www.hibernate.org/xsd/orm/cfg“:class-cache, “http://www.hibernate.org/xsd/orm/cfg“:collection-cache, “http://www.hibernate.org/xsd/orm/cfg“:event, “http://www.hibernate.org/xsd/orm/cfg“:listener}’ 之一开头。] 
异常原因: 在hibernate主配置文件中,写入了无效的标签。错误的标签如下: 
true 
update

解决方案: 将maping改为mapping,问题解决

异常二

异常描述: Spi.服务异常:不能去创建一个被请求的服务

异常信息: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) 
异常原因: 经过仔细检查,发现在dao层,没有加载配置文件。 
public class Demo { @Test //向数据库中插入Customer对象 public void fun1(){ //1 加载配置 Configuration conf = new Configuration(); //2创建SessionFactory SessionFactory sf = conf.buildSessionFactory(); //3 获得session Session session = sf.openSession(); //4 获得并打开事务 Transaction tx = session.beginTransaction(); //5执行操作 Customer c = new Customer(); c.setCust_name(“哈哈”); session.save(c); //6提交事务,关闭资源 tx.commit(); session.close(); sf.close(); } } 
需要在conf中加载configure();

解决方案: 没有加载配置文件,需要加载配置文件。如下: 
Configuration conf = new Configuration().configure();

异常三

异常描述: 服务器启动过程中控制台一直提示警告:设置属性 资源到服务器中,hibernate不能发现匹配的属性 
发现后台程序不报错,但是数据库表不能创建,数据也不能进行插入

异常信息: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:hibernate’ did not find a matching property. 
异常原因: 经过仔细检查,发现启动异常,服务器启动后一直警告,说hibernate不能找到匹配属性,原因在于前台的页面中表单的属性的name和数据库中的字段以及实体类中的字段名称不一致,导致前台数据的值不能封装插入到数据库。

解决方案: 修改前台页面表单中的name属性和实体类的name属性以及映射文件中的字段一致。

异常四

异常描述: 映射异常:不能完成对24行10列的解析,cvc-complex-type.2.3: 元素 ‘beans’ 必须不含字符 [子级], 因为该类型的内容类型为“仅元素” 
异常信息: Caused by: org.hibernate.boot.MappingException: Unable to perform unmarshalling at line number 24 and column 10. Message: cvc-complex-type.2.3: 元素 ‘class’ 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”。 : origin(ceshi/demo1/Customer.hbm.xml) 
异常原因: 在配置文件中ceshi/demo1/Customer.hbm.xml含有特殊字符

解决方案: 要规范,必须有结束。

异常五

异常描述: 属性不能构建异常:无法找到字段和getter方法属性命名(cn.itheima.web.domain.Customer # cust_user_id) 
异常信息: org.hibernate.property.access.spi.PropertyAccessBuildingException: Could not locate field nor getter method for property named [cn.itheima.web.domain.Customer#cust_user_id]

异常原因: 映射配置文件中的实体属性名和实体类中属性名不一致 
解决方案: 修改映射配置文件属性名,保证名称和实体类中属性名称一致

异常六

异常描述: org.hibernate.exception.sqlgrammarexception:创造模式迁移的数据库信息误差 
异常信息: org.hibernate.exception.SQLGrammarException: Error creating DatabaseInformation for schema migration 
异常原因: Hibernate核心配置文件中方言写错了

解决方案: 改成 
org.hibernate.dialect.MySQLDialect

异常七

异常描述: Hibernate异常:一个错误:字段cust_id没有一个默认值 
异常信息: ERROR: Field ‘cust_id’ doesn’t have a default value 
org.hibernate.exception.GenericJDBCException: could not execute statement 
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
异常原因:在主配置文件(hibernate.cfg.xml)中设置的数据库id的自增长策略单词写错,导致数据库主键id为空 
解决方案: 修改正确的主键自增策略,常见的为native,increment

异常八

异常描述: hibernate资源关闭异常:servlet的service服务在路径/hibernate_crm中抛出了一个异常

异常信息: 严重: Servlet.service() for servlet [AddCustomerServlet] in context with path [/Hibernate_crm] threw exception 
org.hibernate.ResourceClosedException: org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl@e39b6f is closed 
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.errorIfClosed(AbstractLogicalConnectionImplementor.java:38)
异常原因: 在使用hibernate保存对象的过程中,使用了本地线程绑定的session,当事务已经提交,本地线程绑定的session就已经自动关闭,但是该学员在dao层又一次关闭了session,就导致了session资源的重复关闭。 
解决方案: 去掉dao层的关闭session的代码,问题可以解决

异常九

异常描述: Hibernate异常:保存是无效的没有一个有效的事务 问题发生在: cn.w.dao.impl.CustomerDaoImpl类中的save方法里,在第16行 
的问题是保存用户信息操作,一直不能往数据库保存用户的信息 
异常信息: 严重: Servlet.service() for servlet [AddCustomerServlet] in context with path [/Hibernate_crm] threw exception 
org.hibernate.HibernateException: save is not valid without active transaction 
at org.hibernate.context.internal.ThreadLocalSessionContextTransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:334)atcom.sun.proxy.Proxy29.save(Unknown Source) 
at cn.w.dao.impl.CustomerDaoImpl.save(CustomerDaoImpl.java:16) 
at 
异常原因: 问题在于service层使用hibernateUtils获得了一个session,但是在dao层保存用户信息的时候又获了了一个当前的session,两个操作的session不一致,导致数据库的数据不能正确插入。 
解决方案: Service代码修改如下,获取一个本地session对象:Transaction tx = HibernateUtils.getCurrentSession().beginTransaction(); 
Dao层也是获取当前的本地session对象:Session session = HibernateUtils.getCurrentSession();//获得Session 
只要保证操作数据的两个session一致,数据即可插入

异常十

异常描述: 没有 CurrentSessionContext 的配置 
异常信息: org.hibernate.HibernateException: No CurrentSessionContext configured! 
org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:695) 
at cn.itcast.util.HibernateUtil.getCurrentSession(HibernateUtil.java:29) 
at cn.itcast.test.CstCustomerDemo.test1(CstCustomerDemo.java:31) 
异常原因: 在执行cn.itcast.util.HibernateUtil类中getCurrentSession方法第29行出现异常,使用配置文件创建CurrentSession出现问题 
解决方案: 第一种:使用 openSession() 替换 getCurrentSession() 
第二种:修改配置文件,配置文件中绑定当前session的配置应该为:thread

异常十一

异常描述: 空指针异常 
异常信息: cn.itcast.text.shuangtest01 
demo01(cn.itcast.text.shuangtest01) 
java.lang.NullPointerException 
at cn.itcast.service.seviceImpl.ICstLinkmanAndCustomerServiceImpl.saveCustomerandCstLinkmen 
异常原因: 将对象进行save操作时候出错,因为保存时候需要session,而session获取时出现问题 
解决方案: Hibernate.cfg.xml配置文件中: 
thread(正确) 
thread(错误)

异常十二

异常描述: 初始化session工厂失败! 
异常信息: Exception in thread “main” java.lang.ExceptionInInitializerError: 初始化session工厂失败! 
at cn.itcast.utils.HibernateUtil.(HibernateUtil.java:22) 
异常原因: 加载hibernate.cfg.xml的配置文件创建session工厂时失败,配置文件存在问题 
解决方案: 第一个:update只会自动创建表,并不会自动创建数据库,所以需要根据hibernate.cfg.xml配置文件所连接的数据库名先创建数据库 
第二个:实体类的hbm.xml配置文件中属性名和实体类的属性名不一致,需将实体类映射配置文件中的属性名和实体类的属性名保持一致

异常十三

异常描述: xml SAX解析异常:在配置文件的第22行,19列 即。该标签包含了子级字符。 
异常信息: org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 19; cvc-complex-type.2.3: 元素 ‘session-factory’ 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”。 
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) 
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidComplexType(XMLSchemaValidator.java:3200)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidat 
异常原因: 在hibernate.cfg.xml文件中 看一看字符集,是否有BOM 或

异常十四

异常描述: 该异常为:空指针异常,该异常发生在CustomerListServlet的第25行 
异常信息: java.lang.NullPointerException 
at cn.itcast.web.Servlet.CustomerListServlet.doGet(CustomerListServlet.java:25) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at 
异常原因: 在做查询所有Customer对象,从dao层获取到list list;返回到service层,service层的代码,public List findAllCustomer() { 
CustomerDao customerDao = new CustomerDao(); 
customerDao.findAllCustomer();

    return null;
}没有返回List.所以在servlet层获取到list的时候调用方法的时候报空指针异常。

解决方案: 将代码改为:public List findAllCustomer() { 
CustomerDao customerDao = new CustomerDao(); 
return customerDao.findAllCustomer(); 
}即可。

异常十五

异常描述: 该异常为:hibernate的映射找不到异常,即映射资源找不到。 
异常信息: org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found : domain/Customer.hbm.xml : origin(domain/Customer.hbm.xml) 
at org.hibernate.boot.spi.XmlMappingBinderAccess.bind(XmlMappingBinderAccess.java:56) 
at org.hibernate.boot.MetadataSources.addResource(MetadataSources.java:274) 
at org.hibernate.boot.cfgxml.spi.MappingReference.apply(MappingReference.java:70) 
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:413) 
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724) 
at cn.itcast.utils.HibernateUtils.(HibernateUtils.java:18) 
at cn.itcast.CustomerDao.CustomerDao.findAllCustomer(CustomerDao.java:33) 
at cn.itcast.CutomerService.CustomerService.findAllCustomer(CustomerService.java:18) 
at cn.itcast.web.Servlet.CustomerListServlet.doGet(CustomerListServlet.java:24) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
at 
异常原因: 在hibernate.cfg.xml中要引入映射文件,即 
即找不到映射文件。 
解决方案: 修改配置文件的路径.这样就可以加载到 
映射配置文件。

HIbernate常见异常(转载)的更多相关文章

  1. 【转】Hibernate 常见异常

    转载地址:http://smartan.iteye.com/blog/1542137 Hibernate 常见异常net.sf.hibernate.MappingException        当出 ...

  2. Hibernate 常见异常

    Hibernate 常见异常net.sf.hibernate.MappingException        当出现net.sf.hibernate.MappingException: Error r ...

  3. spring+hibernate常见异常集合

    spring+hibernate出错小结: (1)java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext ...

  4. Hibernate常见异常总结

    系统配置 1.没有查找到src目录下的hibernate.cfg.xml Exception in thread "main" org.hibernate.HibernateExc ...

  5. Hibernate常见异常

    1.数据库编码问题 主要错误信息 WARN: SQL Error: 1366, SQLState: 22001 ... ERROR: Data truncation: Incorrect string ...

  6. Maven常见异常及解决方法(本篇停更至16-4-12)

    本篇文章记录了老猫在学习整合Maven和SSH过程中遇到的问题,有的问题可以解决.有的问题还不能解决. 方法不一定适合全部的环境.但绝对是本人常遇到的常见异常.在这里做一个笔记和记录,也分享给大家,希 ...

  7. Hibernate常见错误整理

    Hibernate常见错误合集   1.错误:object references an unsaved transient instance - save the transient instance ...

  8. struts2.1.8+hibernate2.5.6+spring3.0(ssh2三大框架)常见异常原因和解决方案

    ---------------------------------------------------------------------------------------------------- ...

  9. flume常见异常汇总以及解决方案

    flume常见异常汇总以及解决方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际生产环境中,我用flume将kafka的数据定期的往hdfs集群中上传数据,也遇到过一系列的坑 ...

随机推荐

  1. 【Alpha】Scrum Meeting 8

    目录 前言 任务分配 燃尽图 会议照片 签入记录 困难 前言 第8次会议在4月12日21:00进行微信会议. 交流确认了任务进度,对下一阶段任务进行分配.时长15min. 任务分配 姓名 当前阶段任务 ...

  2. 给COCO数据集的json标签换行

    #include <iostream> #include <fstream> #include <string> #include <vector> u ...

  3. [系统相关]WPS Office 2016 专业增强版 10.8.0.6470 免序列号无限制

    WPS Office (10.8.0.6470)  新增功能列表 ============================================= 改进功能列表 ------------ W ...

  4. canvas与svg

    canvas与svg都是用于在网页上绘制图形(位图). canvas是HTML5新出来的一个标签,用来定义一块画图的区域(canvas本身没有绘制能力),用JavaScript来画图,可以绘制路径.矩 ...

  5. 微信小程序开发——简记

    MVVM:提倡渲染(页面)和逻辑分离.页面(DOM),逻辑(后端代码JS等)—> JS操纵DOM.通过模板引擎,操纵和表现. 页面与程序,如何配合工作: 微信客户端会根据page.json配置, ...

  6. swift 有道 翻译文档(1 定义变量常量,数组字典)

    使用let来创建常量,使用var来创建变量.一个常量的值在编译时不需要知道,但是您必须为它指定一个值一次.这意味着您可以使用常量来命名一个您确定一次的值,但是在许多地方使用它.var myVariab ...

  7. 用户端访问centos7上面的tomcat,访问页面出现的非常的慢?

    原因:因为客户端访问centos7上面的tomcat会先 建立session连接,这个连接会用到random的随机数,在linux系统中有一个熵池的概念(熵池是一个内核参数), 他要 用熵池里面的随机 ...

  8. git删除文件夹

    git  rm  要删除的文件夹  -r -f   git  commit  -m  'del  config' git  push 使用场景,删除test文件夹,本来在码云上,正常的文件夹右击会出现 ...

  9. 环境准备—之—linux下安装python3和pip3

    转自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html 前言 centos7 自带有 python,但是却是 python2 版本的 py ...

  10. springboot缓存注解——@Cacheable和@CacheConfig

    @Caching :制定多个缓存规则 @Cacheable 和 @CachePut 同时标注时 ,@CachePut导致还是会走方法跟数据库交互 //根据lastName查,并将结果缓存,并且可以用于 ...