2008-05-18
我的 hibernate 级联插入
关键字: hibernate
我做一个网上书城的项目,用户下订单要用两张表完成,ws_order,ws_orderItem
ws_orderItem通过外键关联第一张表的主键。
表的映射文件关键部分如下:
WsOrder.hbm.xml:
<set name="wsOrderItems" inverse="false" cascade="all">
<key>
<column name="orderId" not-null="true" />
</key>
<one-to-many class="com.yourcompany.table.WsOrderItem" />
</set>
WsOrderItem.hbm.xml
<many-to-one name="wsOrder" class="com.yourcompany.table.WsOrder" fetch="select" cascade="all">
<column name="orderId"/> //注意:这列要可以为空
</many-to-one>
使用的方法如下:
public WsOrder createOrder(CarBean carBean,WsUser wsUser,String payment){
WsOrder order=new WsOrder();
Set<WsOrderItem> orderItems=new HashSet();
for(int i=0;i<carBean.getBookList().size();i++){
WsBook wsBook=bookDaoInter.findById(carBean.getBookList().get(i).getBookId());
orderItems.add(createOrderItem(
(short)carBean.bookList.get(i).getNumber(),
wsBook
));
}
order.setAddress(wsUser.getAddress());
order.setCreatedDate(new Date());
order.setDeliver(carBean.getDeliver());
order.setMobilePhone(wsUser.getMobilePhone());
order.setName(wsUser.getName());
order.setPayment(payment);
order.setState("未发货");
order.setTelephone(wsUser.getTelephone());
order.setWsOrderItems(orderItems);
order.setWsUser(wsUser);
order.setZip(wsUser.getZip());
return order;
}
然后用DAO保存order即可
orderItem的外键并没有设置(所以这列要可以为空,不然会有异常),保存后会自动关联到order上
ws_orderItem通过外键关联第一张表的主键。
表的映射文件关键部分如下:
WsOrder.hbm.xml:
<set name="wsOrderItems" inverse="false" cascade="all">
<key>
<column name="orderId" not-null="true" />
</key>
<one-to-many class="com.yourcompany.table.WsOrderItem" />
</set>
WsOrderItem.hbm.xml
<many-to-one name="wsOrder" class="com.yourcompany.table.WsOrder" fetch="select" cascade="all">
<column name="orderId"/> //注意:这列要可以为空
</many-to-one>
使用的方法如下:
public WsOrder createOrder(CarBean carBean,WsUser wsUser,String payment){
WsOrder order=new WsOrder();
Set<WsOrderItem> orderItems=new HashSet();
for(int i=0;i<carBean.getBookList().size();i++){
WsBook wsBook=bookDaoInter.findById(carBean.getBookList().get(i).getBookId());
orderItems.add(createOrderItem(
(short)carBean.bookList.get(i).getNumber(),
wsBook
));
}
order.setAddress(wsUser.getAddress());
order.setCreatedDate(new Date());
order.setDeliver(carBean.getDeliver());
order.setMobilePhone(wsUser.getMobilePhone());
order.setName(wsUser.getName());
order.setPayment(payment);
order.setState("未发货");
order.setTelephone(wsUser.getTelephone());
order.setWsOrderItems(orderItems);
order.setWsUser(wsUser);
order.setZip(wsUser.getZip());
return order;
}
然后用DAO保存order即可
orderItem的外键并没有设置(所以这列要可以为空,不然会有异常),保存后会自动关联到order上







评论排行榜