JPA持久化异常:PersistenceException: org.hibernate.PersistentObjectException
1.PersistenceException異常如下
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.java.bean.Student
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:162)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:780)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:758)
at com.java.test.Test.testInsertS(Test.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.java.bean.Student
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:124)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:773)
… 18 more
2.通常出現(xiàn)PersistenceException原因
通常原因都是設置了- -主鍵自增策略 @GeneratedValue(strategy=GenerationType.IDENTITY)
1-設置主鍵自增時,必須在數據庫中設置主鍵自增和在對應的實體類中設置對應的主鍵自增,只要有哪一邊沒有設置,就會報該異常
2-在設置了主鍵自增了,保存數據時,自己設置了主鍵,則也會報PersistenceException
比如Student類中sid為主鍵,并且設置了主鍵自增,但是持久化時,new對象時給了id
Student tStudent=new Student(2, "哈哈", 2);//此時會報錯,不能設置sid總結
以上是生活随笔為你收集整理的JPA持久化异常:PersistenceException: org.hibernate.PersistentObjectException的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JPA保存数据异常:org.hibern
- 下一篇: 首次使用maven的配置过程