afsfsdfdsfsdf 2009-06-08 15:31
浏览 248
已采纳

spring2.5+JPA+hibernate+struts2的级联保存

使用的开发环境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中,建立了虚拟的属性

  • 写回答

9条回答

  • iampurse 2009-06-10 08:51
    关注

    楼上的很有才,什么叫莫名其妙的答案。

    别人连代码 运行环境都没有 给你提供解决思路,你就这点态度?

    出现这个问题可能有两个原因(据我猜想,也可能是你说的莫名其妙)

    一是: OneToMany 和 ManyToOne配置有问题,建议你先看看书在来写。
    二是:你更新级联关系的时候代码有问题,配置他的fetchType="lazy"
    不要即时取出来,然后new一个新的父节点 并设置给他。

    [code="java"]
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "parentid")
    public WsUnit getWsUnit() {
    return this.wsUnit;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "wsUnit")
    public Set<WsUnit> getWsUnits() {
        return this.wsUnits;
    }
    

    [/code]

    你修改的时候,他的父节点 被你取出来的话,直接就变成一个受管实体。
    你修改的父节点的话,他自动会设置到原来的那个去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波