日常积累的一些关于hibernate的报错以及处理的方法
错误1 /hibernate.cfg.xml not found
错误名称:hibernate.cfg.xml配置文件找不到解决方案 : 这是hibernate.cfg.xml的文件名写错了
错误2 Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
错误名称:实体类的映射文件有错 导致 sessionFactory 无法生效
解决方案:第一种可能是缺少javassist.jar包
第二种可能是hibernate.cfg.xml的mapping配置错误,仔细检查这个文件,把有错误的先注释掉再试试
第三种可能是某个实体类中外加了某些getXX(),而不存在XX属性,这时要在get上加@Transient,不持久化它就行了。或者是实体表或映射表中属性写的不一致导致的,所以要细心检查实体类、.hbm.xml和数据库之间的属性名、字段名还有类型是否写错了。
错误3: Dialect class not found: oracle.jdbc.OracleDriver
错误名称:找不到Dialect 类
解决方案:ojdbc6_g.jar 架包没有发布
错误4: Could not instantiate dialect class
Caused by: java.lang.ClassCastException: oracle.jdbc.OracleDriver cannot be cast to org.hibernate.dialect.Dialect
at org.hibernate.dialect.resolver.DialectFactory.constructDialect(DialectFactory.java:156)
... 6 more
错误名称:方言不能被实例化
解决方案:检查配置文件的书写是否写错
错误5: Could not find a getter for isAdmin in class org.hibername.Entity.Users
错误名称:找不到isAdmin属性的get()
解决方案:检查实体类
错误6: 执行 Emp emp = (Emp) session.get(Emp.class, 7369);
TypeMismatchException:....
原因:提供的主键值7369和实体类中的主键类型不匹配
错误7: Unknown entity: org.emp.entity.Emp
原因:没有在配置文件中添加映射文件的引用,也就是没有拽进去
错误8:MappingNotFoundException: resource: org/emp/entity/Emp.hbm.xml not found
原因:引入的映射文件文件不存在,检查名称和路径是否正确
错误9:org.hibernate.hql.ast.QuerySyntaxException: tbl_emp is not mapped [from tbl_emp]
原因:没有tbl_emp类 hql语句中的tbl_emp不被Query对象认识
错误10: could not resolve property
名称:不能解决的属性
原因及解决:顾名思义 hql语句的属性写错了 检查hql语句中的属性名称
错误11:org.hibernate.TransientObjectException: The given object has a null identifier
原因:hibernate更新时出的问题 参数实体类的主键没有赋值
错误12:org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.Order.entity.Orders
原因: 级联添加问题