ls174047186 2010-04-04 11:50
浏览 348
已采纳

hibernate级联更新外键问题

使用级联更新时,通过子表更新始终取不到主表的主键值,导致子表外键值始终是空的,而通过主表更新,子表能够取到所有值,小弟不解到底是怎么回事,请编程能人指教,代码如下:
[code="java"]/*添加订单到数据库*/
Order_ order=new Order_();
User user=(User)session.get(Constants.LOGIN_USER);
order.setUserId(user.getUserId());
order=this.orderService.saveOrder(order);

/*添加订单项到数据库*/
List orderitems=(List)session.get(Constants.CART);

//一对多级联更新
Set set=new HashSet(orderitems);
order.setOrderitems(set);
this.orderService.updateOrder(order);

Orderitem orderitem=new Orderitem();
Hotel hotel=new Hotel();
for(int i=0;i < orderitems.size();i++){
orderitem=(Orderitem)orderitems.get(i);
// orderitem.setOrder(order);使用多对一更新的时候始终取不到外键值,而一对多可行
// this.orderitemService.saveOrderitem(orderitem);

/*预定后更新对应酒店的预定次数*/
hotel=this.hotelService.findByHotelId(String.valueOf(orderitem.getHotelId()));
hotel.setTimes(hotel.getTimes()+1);
this.hotelService.updateHotel(hotel);

}
[/code]
hbm.xml文件
[code="java"]





<!-- cascade="all"级联保存,更新,删除附属物。inverse="true"设置关联关系由对方维护。为set属性 -->

<!-- 相关联主键 -->

<!-- 设置一对多关联类 -->







[/code]
[code="java"]





column="oid"
class="com.myssh.po.Order_"
cascade="none"
update="false"
insert="false"
not-null="true"
/>

















[/code]
PO部分
[code="java"]public class Order_ {

private int orderId;
private int userId;
private Set orderitems;//一对多字段[/code]

[code="java"]public class Orderitem {

private int orderitemId;
private int orderId;
private int hotelId;
private Date beginDate;
private int days;
private int type;
private Order_ order;//多对一字段[/code]
  • 写回答

1条回答 默认 最新

  • iteye_1059 2010-04-06 08:37
    关注

    inverse="true"

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 优质github账号直接兑换rmb,感兴趣伙伴可以私信
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)