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. knative

    office Doc Knative 简介 Install sevice example (knative) There is only one node in the cluster so we u ...

  2. Oracle错误——tablespace 'XXXX' does not exist

    错误 在使用IMP命令导入Oracle数据的时候,因为导出数据的数据库表空间和导入数据的数据库表空间不同,导致导入数据失败,出现:tablespace 'XXXX' does not exist 在网 ...

  3. express之req res

    request对象和response对象 Request req.baseUrl 基础路由地址 req.body post发送的数据解析出来的对象 req.cookies 客户端发送的cookies数 ...

  4. EvansClassification

    EvansClassification In his excellent book Domain Driven Design, Eric Evans creates a classification ...

  5. 用python计算圆周率

    from random import randomfrom time import perf_counterDARTS = 1000 * 1000hits = 0.0start = perf_coun ...

  6. HDU 3567 Eight II(八数码 II)

    HDU 3567 Eight II(八数码 II) /65536 K (Java/Others)   Problem Description - 题目描述 Eight-puzzle, which is ...

  7. [IoC容器Unity]第四回:使用范例

    1.引言 前面几个章节介绍了Unity的基本使用,主要分为程序和配置文件两种方法的使用,可以参考一下链接, [IoC容器Unity]第一回:Unity预览 [IoC容器Unity]第二回:Lifeti ...

  8. React Native图片缓存解决方案

    1. react-native-fetch-blob 将图片存在本地的一个东西 2. react-native-img-cache 自动缓存的一个东西 上面装好后 就可以使用啦 import {Cac ...

  9. hadoop搭建笔记(一)

    环境:mac/linux hadoop版本:3.1.1 安装特性:非HA 准备: 1. jdk8以上 2. ssh 3. 下载hadoop安装包 配置文件,这里都只有简易配置: 1. core-sit ...

  10. vue的一些随记

    1.vue中在methods等中使用filters中的过滤器 this.$options.filters[filter](...args)