luobilong 2009-07-02 17:19
浏览 213
已采纳

各路大大帮忙看看,HIBERNATE的FIND()方法,为什么后台先是DELETE然后INSERT

Order.hbm.xml文件:





















Item.hbm.xml文件:










Order包含purchaseItems,purchaseItems是一个SET集合,里面是ITEM,我想显示Order的时候,用以下语句:
String sql = "from Order";
this.getHibernateTemplate().find(sql).size();

但后台会执行下面语句:

Hibernate: select order0_.order_id as order1_2_, order0_.orderName as orderName2_, order0_.orderState as orderState2_, order0_.user_id as user4_2_ from orders order0_
Hibernate: select purchaseit0_.order_id as order1_0_, purchaseit0_.quantity as quantity0_, purchaseit0_.item_id as item3_0_ from order_item purchaseit0_ where purchaseit0_.order_id=?
Hibernate: select item0_.item_id as item1_4_0_, item0_.itemName as itemName4_0_ from item item0_ where item0_.item_id=?
Hibernate: select item0_.item_id as item1_4_0_, item0_.itemName as itemName4_0_ from item item0_ where item0_.item_id=?
Hibernate: delete from order_item where order_id=? and quantity=? and item_id=?
Hibernate: insert into order_item (order_id, quantity, item_id) values (?, ?, ?)
Hibernate: insert into order_item (order_id, quantity, item_id) values (?, ?, ?)
这还是在orders表中只有一条记录,对应order_item表中两条记录的情况,如果记录数多了,那全严重影响效率的,我搞不明白,为什么用来配置关联关系后,执行查询会出现先删除后插入的命令,把配置去了,便一切正常,大家以前遇到过这种情况吗?

  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2009-07-09 16:32
    关注

    因为定义了这个元素的话,Perchase就变成值类型,并且不允许共享引用。
    它的生命周期完全由包含它的实体类管理,

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

报告相同问题?

悬赏问题

  • ¥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文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改