1. 程式人生 > >JPA 開發中遇到的錯誤彙總

JPA 開發中遇到的錯誤彙總

轉載原文    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

: result returns more than one elements
異常環境:查詢、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指向本表字段名