關於hibernate的一些錯誤和異常
阿新 • • 發佈:2019-02-12
日常積累的一些關於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
原因: 級聯新增問題