JPA 開發中遇到的錯誤彙總
阿新 • • 發佈:2019-02-20
轉載原文 http://blog.sina.com.cn/s/blog_7045cb9e0100y20v.html
常見異常
1、異常資訊:org.hibernate.hql.ast.QuerySyntaxException: person is not mapped
異常環境:查詢
異常原因:查詢語句中Person類沒有大寫
2、java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
異常環境:查詢、遍歷顯示
異常原因:轉型出錯
3、javax.persistence.NonUniqueResultException
異常環境:查詢、getSingleResult
異常原因:getSingleResult只能獲取一條資料,而查詢語句返回的是多條資料
4、 org.hibernate.PropertyValueException: not-null property references a null or transient value: com.sunyard.entities.Person.name
異常環境:資料插入
異常原因:JPA的Entity中一個屬性定義為nullable=false,插入資料該欄位為null
5、 執行新增沒反應、沒異常
異常原因:沒有開啟事務、沒有提交事務
6、javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.sunyard.entities.Person
異常環境:OneToOne 共享主鍵關聯
異常原因:一對一中,一個提供主鍵、另一個共享其主鍵,共享主鍵的物件可以set 提供主鍵的物件 然後新增到資料庫中
方向弄反了 後果就是沒人提供主鍵
7、org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing:
異常環境:多對一新增
異常原因:在多的一端維護 ,沒有新增級聯
8、javax.persistence.PersistenceException: [PersistenceUnit: JPA] Unable to configure EntityManagerFactory
異常原因:很多、實體管理器Factory沒有成功建立,是註解的問題
9、org.hibernate.MappingException: Unable to find column with logical name: sid in org.hibernate.mapping.
異常環境:新增表做多對一關聯對映
異常原因:表字段寫反了,name新增表字段名referencedColumnName指向本表字段名