1. 程式人生 > >關於hibernate的一些錯誤和異常

關於hibernate的一些錯誤和異常

日常積累的一些關於hibernate的報錯以及處理的方法

錯誤1    /hibernate.cfg.xml not found

錯誤名稱:hibernate.cfg.xml配置檔案找不到
解決方案  :  這是hibernate.cfg.xml的檔名寫錯了


錯誤2Unable 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
原因:  級聯新增問題