使用的开发环境spring2.5+JPA+hibernate+struts2
模型 是一张employee表,一张client表,销售表sale,销售明细表sale_details
sale表中,包括字段employee_id,client_id以与employee、client表关联。
问题是:
在维护sale表时,增加数据填写employee、client信息时,都没错误,但是更新这两个字段信息时确出现错误提示:说把employee表里面id的原来的值给改了,因为id是主键不能修改,所以就提示错误。比如sale表中保存的employee_id为3,在employee中有条记录与此对应,现在在UI中选择id为4的用户,然后保存,则提示上面说的错误。
我查找了entity的关系设置,基本上没什么问题啊,而且使用testcase测试也没问题;
[b]问题是在保存sale表时,struts的action中为什么会去保存employee的实体呢?[/b]
我前台用的employee选择是struts2的下拉框组件。
这问题困扰了我好几天
有那位仁兄知道的,请指教,先谢谢了
[b]问题补充:[/b]
JPA里面没设置啊,我把代码写出来,您看一下
@ManyToOne(cascade=CascadeType.Refresh)
public Employee getEmployee() {
return this.employee;
}
CascadeType的几种我都试过的,都不行
@ManyToOne 什么也不加也试过,也不行
[b]问题补充:[/b]
@ManyToOne什么也不写呢?那还能产生级联更新问题吗?
麻烦告诉我设置方式,我查了一些资料,试了一些,还没找到正确方式
[b]问题补充:[/b]
现在是不需要级联更新的,如,更新sale表的employee信息时,别去更新employee实体去,我在配置sale实体与employee实体关系时使用@ManyToOne什么也没加,也出现问题。
另外补充一下:客户端action中,我用了modeldriven,在页面中使用struts2的下拉框组件
sea723 朋友遇到的问题 和我这个是一个意思
[b]问题补充:[/b]
问题已解决,感谢iampurse 和 sea723
我现在也是在action中,建立了虚拟的属性