本文最初发布在
http://www.lovestblog.cn,转载请注明出处,谢谢合作。
最近在忙一个项目,使用的是Flex+Spring+Hibernate,期间碰到一个问题,有必要在此记录一下,也方便有相似问题的来者参考下
问题描述:有一个用户表和一个用户详情表,这两个表是一个一对一的单向关联关系,即在用户表中一个外键引用用户详情表,我在UserInfo的映射文件中使用的是many-to-one,设置了unique="true"表示一对一关系,设置了cascade="save-update"表示的是在保存useInfo对象的时候会自动保存与之关联的userDetails临时对象,即我希望的是先执行一个在用户详情表中的插入语句然后再执行一个在用户表中的插入语句,userInfo对象是从flex端传过来的,当然也设置了userDetails属性的值,在userInfo的dao文件中save方法是这样的
public IvUserInfo save(IvUserInfo transientInstance) {
log.debug("saving IvUserInfo instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
return transientInstance;
}
后面发现执行的sql语句只有一条插入语句,就是在用户表中的一个插入,由于外键的关联作用,是用户表的这条插入也无法执行,这就是问题所在了。
问题解决:这个问题我也没有具体研究Hibernate的源码,我先写了个测试类,发现仅仅在java中执行操作的话是可以正确执行两条插入语句的,但是通过flex传过来就有问题了,那说明是flex端传参数过来的问题,于是我试着修改UserInfo的save方法:
public IvUserInfo save(IvUserInfo transientInstance) {
log.debug("saving IvUserInfo instance");
try {
IvUserDetails ud=new IvUserDetails();
ud.setQq(transientInstance.getIvUserDetails().getQq());
transientInstance.setIvUserDetails(ud);
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
return transientInstance;
}
这样一来问题解决了,顺利执行了两条插入语句。
如果朋友知道具体原因的话希望给我留言了,同时也希望该记录能帮助碰到此类问题的朋友。
分享到:
相关推荐
Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单
struts+hibernate+ajax级联菜单struts+hibernate+ajax级联菜单
Hibernate的级联操作(增,删,该)
DWR+hibernate+spring级联下拉列表框 DWR+hibernate+spring级联下拉列表框
flex tree+checkbox可实现级联勾选
利用javascript+json实现级联查询
Haar-like + adaboost +级联 人脸检测算法代码,简洁的代码,已通过测试
js+xml生成级联下拉框代码.docx
用Struts2+Spring+Hibernate三大框架完成的级联操作,包括省市县和年月日
Struts2+Hibernate写的下拉菜单级联两级分类,不带JRA包,自己下载吧,
使用ajax+struts2.0+jsp做的一个多下拉列表级联
基于eclipse开发的Struts+hibernate+SqlServer2000级联下拉框
主要介绍了nodejs+mongodb aggregate级联查询操作,结合实例形式分析了基于nodejs的mongodb数据库级联查询相关操作技巧,需要的朋友可以参考下
实现ssh+dwr的3级联 相关包已经删除。。文件过大。。源文件
Hibernate级联操作一对多demo Hibernate级联操作一对多demo Hibernate级联操作一对多demo
jQuery+div实现级联省份-城市查询,该实例包含jsp+js+css,所有代码为本人亲自编写,如有疑问请联系本人
mysql ajax 级联操作。本案例可以很灵活的使用任何级别的级联操作.基于ssh框架的
Spring+Hibernate 框架整合写的一对一映射级联增删改查小例子,有SQL文件和使用说明,代码简洁易懂.
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法