Hibernate常见异常总结

系统配置

1.没有查找到src目录下的hibernate.cfg.xml

Exception in thread "main" org.hibernate.HibernateException: /hibernate.cfg.xmlnot found

映射配置

2.在系统配置文件cfg.xml文件中写的映射文件名不存在

Exception in thread "main" org.hibernate.MappingNotFoundException: resource: cn/itcast/h3/user/UserModel.hbm.xml not found

3.配置文件中的映射属性名与模型中的属性名不统一

Caused by: org.hibernate.PropertyNotFoundException: field [name] not found on cn.itcast.h3.user.UserModel

4.配置文件中的数据库列名名与数据库表中的字段名名不统一

Caused by: java.sql.BatchUpdateException: Unknown column 'user' in 'field list'

操作增删改

5.在进行保存前,如果对象OID没有设置值,并且生成策略为assigned

Exception in thread "main" org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): cn.itcast.h3.user.UserModel

6.当操作保存一个数据时,如果OID对应的值存在

Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Caused by: java.sql.BatchUpdateException: Duplicate entry '5' for key 1

7.执行增删改语句发生错误,具体操作具体分析

Exception in thread "main" org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

8.进行删改语句未找到影响的数据,抛出该异常,OID不存在

Exception in thread "main" org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

9.Hibernate在试图操作一个对象时,检测出该对象是TO对象,不具有OID,而执行非save相关的操作

Exception in thread "main" org.hibernate.TransientObjectException: The given object has a null identifier: cn.itcast.h3.cache.UserModel

10.一级缓存中加载两个不同的对象具有相同的OID数据

Exception in thread "main" org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [cn.itcast.h3.cache.UserModel#15]

操作查询

11.使用load方法读取数据时,如果对应的OID不存在数据

Exception in thread "main" org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [cn.itcast.h3.api.UserModel#100]

12.QBC查询时,直接使用关联对象名.属性名作为查询条件

Exception in thread "main" org.hibernate.QueryException: could not resolve property: teacher.teacherName of: cn.itcast.h3.relation.vo.StudentModel

13.HQL进行参数设置时,索引位置错误

Exception in thread "main" org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2

14.查询结果不唯一,使用uniqueResult方法得到超过一条数据

Exception in thread "main" org.hibernate.NonUniqueResultException: query did not return a unique result: 5

其他

15.Hibernate操作对象过程中试图修改对象的OID

Exception in thread "main" org.hibernate.HibernateException: identifier of an instance ofcn.itcast.h3.cache.UserModel was altered from 3 to null

16.操作数据时,一个数据关联了瞬时对象,抛出异常

Exception in thread "main" org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cn.itcast.h3.one2many.StudentModel

17.Session关闭后,试图加载对象中延迟加载数据

Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: cn.itcast.h3.relation.vo.TeacherModel. students, no session or session was closed

原文地址:https://www.cnblogs.com/e206842/p/6550605.html