object references an unsaved transient instance - save the transient instance before flushing .
http://blog.csdn.net/zdwzzu2006/article/details/7552234
異常1:not-null?property references a?null?or?transient?value
解決方法:將“一對多”關系中的“一”方,not-null設置為false
(參考資料:http://www.thearcmind.com/confluence/pages/viewpage.action?pageId=212)
異常2:org.hibernate.TransientObjectException: object references an unsaved transient instance
解決方法:cascade="save-update,persist"
(參考資料:http://www.laliluna.de/254.html)
異常3:org.hibernate.QueryException: could not resolve property
解決方法:"from Category category where?category.userID?= :userID"修改為"from Category category whereuserID?= :userID"或者"from Category category where?category.user.id?= :userID"
(參考資料:http://www.laliluna.de/277.html)
異常4:could not initialize proxy - the owning Session was closed
解決方法:設置lazy為false
(參考資料:http://forum.springframework.org/showthread.php?t=27993)
?
異常2我在應用中碰到了這樣的問題:
有三個表:userInfo?? deptmentInfo?? role
userInfo 與deptmentInfo為many to one
userInfo 與role為many to one
下面為保存UserInfo對象時的代碼:
??? DeptmentInfo dept = new DeptmentInfo();
??? dept.setDeptName(deptName);
??? Role role = new Role();
??? role.setRoleName(roleName);
??? UserInfo user = new UserInfo();
??? user.setUserName(userName);
??? user.setUserSex(userSex);
??? user.setDuty(duty);
??? user.setPhone(phone);
??? user.setMobileNum(mobileNum);
??? user.setEmail(email);
??? user.setQq(qq);
??? user.setMsn(msn);
??? user.setAdress(adress);
??? user.setDeptmentInfo(dept);
??? user.setRole(role);
??? dao.save(user);
?
執行時有錯:org.hibernate.TransientObjectException: object references an unsaved transient instance
?
于是改了UserInfo.hbm.xml的一些地方
如下:
<many-to-one name="role" class="com.oa.domain.Role"
???cascade="save-update,persist"?fetch="select">
??? <column name="ROLE_ID" precision="22" scale="0" />
?? </many-to-one>
?? <many-to-one name="deptmentInfo"
??? class="com.oa.domain.DeptmentInfo"?cascade="save-update,persist"
??? fetch="select">
??? <column name="DEPT_ID" precision="22" scale="0" />
?? </many-to-one>
?
加了上面紅色部分的,就OK了,能保存了。
?
?
======================
update 了一個未保存的entity, 應該先保存entity, 然后再調update 方法
總結
以上是生活随笔為你收集整理的object references an unsaved transient instance - save the transient instance before flushing .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Logger.getLogger和 Lo
- 下一篇: Java更新XML的四种常用方法简介