org.hibernate.PersistentObjectException: detached entity passed to persist異常


再用jpa+spring+struts2開發的是時候遇到一個問題(采用了注解的方式,xml配置的道理是一樣的),當我在注冊用戶的時候,注冊第一個用戶沒有問題,但注冊第二個用戶開始就會拋出一個異常:

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.dalton.domain.User

 

原因是第二次插入用戶的時候,還沒有實例化到數據庫就有了ID值,而且這個ID值是我第一次插入用戶的ID,這是不正常,因為ID沒有設置過,而且JPA默認的行為是只要指定了主鍵生成策略,主鍵就不能設置了,一旦不為空或者0就被認為是已經保存到了數據庫中,一旦調用persist()方法就會拋出上面的異常。

為什么會還有第一次的插入用戶的信息呢,原因就是action的作用域設置錯誤了,采用了默認單例的設置,對於Action來說必須采用prototype(每次調用創建一個對象)的作用域,修改方法是:在Action上就一個注解@Scope("prototype")

就可以輕松搞定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM