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 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问