在线等,解决问题立即结贴!!!!!Hibernate的问题

muzg 2004-11-26 11:19:56
刚刚用Spring+Hibernate做项目,父子关系搞不清楚。
在对子表进行更新或插入时,报错:
object references an unsaved transient instance - save the transient instance before flushing: net.kuaile.model.SystemAdmin

我的Form表单里有一项
<html:hidden property="systemAdmin.userId" styleId="systemAdmin.userId"/>
是与父表关联的外键
父表hbm.xml:
<hibernate-mapping>

<class
name="net.kuaile.model.SystemAdmin"
table="user_login"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
optimistic-lock="version"
>

<id
name="userId"
column="user_id"
type="java.lang.String"
length="50"
unsaved-value="version"
>
<generator class="assigned" />
</id>
... ...
<set
name="userSms"
lazy="true"
inverse="true"
cascade="save-update"
>
<key>
<column name="user_id" />
</key>
<one-to-many
class="net.kuaile.model.UserSm"
/>
</set>
</class>
</hibernate-mapping>
子表hbm.xml
<hibernate-mapping>

<class
name="net.kuaile.model.UserSm"
table="user_sms"
>
<id
name="userSmsId"
type="java.lang.Long"
column="user_sms_id"
unsaved-value="null"
>
<generator class="increment" />
</id>
... ...
<many-to-one
name="systemAdmin"
class="net.kuaile.model.SystemAdmin"
not-null="true"
>
<column name="user_id" />
</many-to-one>

</class>
</hibernate-mapping>
DAO:
public void saveUserSm(final UserSm userSm) {
getHibernateTemplate().saveOrUpdate(userSm);
}
hbm.xml不管怎么配也报这个错误,郁闷!!!!
...全文
166 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
muzg 2004-11-29
  • 打赏
  • 举报
回复
问题解决了,父类先持久化就OK,DAO加上
userSm.setSystemAdmin((SystemAdmin)getHibernateTemplate().load(SystemAdmin.class,userSm.getSystemAdmin().getUserId()));
好了,立即结贴
catblue 2004-11-27
  • 打赏
  • 举报
回复
不要泄气,帮你顶一下
老土豆T 2004-11-27
  • 打赏
  • 举报
回复
我只是想问一下UserSm 是PO 还是VO?

UserSm如果是VO,那么先把它持久化吧 。。。
zh_baiyu 2004-11-27
  • 打赏
  • 举报
回复
cnfalcon 2004-11-26
  • 打赏
  • 举报
回复
学习
clearwater21cn 2004-11-26
  • 打赏
  • 举报
回复
不行啊不行。说实在的,我还从来没有遇到过这样的问题,不管怎么改,结果都一样,和没改似的。这个问题已经折磨了我两天了。
5555555555555555555555555555555555555555
bluemeteor 2004-11-26
  • 打赏
  • 举报
回复
楼主英文好的话...可以看看这帖子
http://www.almaer.com/blog/archives/000531.html

我想就是unsaved-value的设置问题....因为我原来遇到过这个问题,,查过很多帖子...而且我那个时候是有时报错有时OK....但是把unsaved-value和gernerator都改为null/increatmetn之后就好了
clearwater21cn 2004-11-26
  • 打赏
  • 举报
回复
getHibernateTemplate().saveOrUpdate()是Spring的,封装了session。
bluemeteor 2004-11-26
  • 打赏
  • 举报
回复
getHibernateTemplate().saveOrUpdate()

你这个方法里面包含了transaction管理了么?
clearwater21cn 2004-11-26
  • 打赏
  • 举报
回复
都试过了,都不行。
郁闷~~~~~~~
我该怎么办?!项目进行不下去了
qingxin1010 2004-11-26
  • 打赏
  • 举报
回复
<column name="user_id" />
换成 <key column="user_id"/>
看这样行不行!

wjmmml 2004-11-26
  • 打赏
  • 举报
回复
我做过的一个例子你参考一下:

<class name="Company" table="COMPANY" dynamic-update="true"
dynamic-insert="true">
<id name="companyid" column="COMPANYID" type="java.lang.Long" unsaved-value="null">
<generator class="sequence" />
</id>

<property name="companyname" column="COMPANYNAME"
type="java.lang.String" />
<property name="adress" column="ADRESS" type="java.lang.String" />
<property name="pccode" column="PCCODE" type="java.lang.String" />
<set name="employer" table="EMPPLOYER" lazy="false"
inverse="true" cascade="all" sort="unsorted"
order-by="employerName asc">
<key column="companyid"></key>
<one-to-many
class="cn.com.surekam.hibernate.persistence.Employer" />
</set>

</class>


子表:
<class name="Employer" table="EMPLOYER" dynamic-update="false"

dynamic-insert="false">
<id name="employerid" column="EMPLOYERID"

type="java.lang.Long" unsaved-value="null">
<generator class="sequence" />
</id>

<property name="employername" column="EMPLOYERNAME"

type="java.lang.String" />
<property name="age" column="AGE" type="java.lang.String" />
<property name="gender" column="GENDER" type="java.lang.String" />
<many-to-one name="company" class="cn.com.surekam.hibernate.persistence.Company"

cascade="none" outer-join="auto" update="true" insert="true"

access="property" column="companyid" not-null="true" />

</class>
dengyin2000 2004-11-26
  • 打赏
  • 举报
回复
你把父子表的ID都设为HIBERNATE自动管理(自动增长也可以),在父子表的 unsaved-value="version" 都去掉!
wjmmml 2004-11-26
  • 打赏
  • 举报
回复
<id
name="userId"
column="user_id"
type="java.lang.String"
length="50"
unsaved-value="null"
>
<generator class="assigned" />
</id>
试试
÷
clearwater21cn 2004-11-26
  • 打赏
  • 举报
回复
mark!
muzg 2004-11-26
  • 打赏
  • 举报
回复
100分也没人要?觉得不够我再加啊!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧