一个现有的ssh工程,hibernate配置了batch-size,没有采用任何事务控制,出现了这样一个问题,一些相同的insert和update语句在进过很长时间才被hibernate提交到数据库执行,这个时间段很长足有半小时之多。有没有人遇到过类似的问题,如何配置hibernate来避免这样的问题呢?

解决方案 »

  1.   

    那你就要配置事务咯,如果你不想事务那就在update或insert后面在flush或者close一下,将缓冲区的内容刷新。
      

  2.   

    问题是HIbernate真的会经过那么长的时间才像数据库提交sql语句吗?这也太扯了吧?
      

  3.   

    估计是你弄出太多的session了。
      

  4.   

    具体情况是这样,有一个表是复合主键,其中一个值是每次insert前查询这个表的最大值+1。遇到的问题是同一个人,前后几次对这个表进行insert操作,出现了主键冲突。也就是在后边的insert在查询主键最大值时查到了前一个insert语句相同的最大值。而且不同的人,主键是不可能冲突的。出现这样的问题,只能是Hibernate的insert语句提交给数据库太晚了,造成间隔一定时间后的insert语句出错。
      

  5.   

    一个insert要这么长时间? 是不是程序问题  或者数据库连接有问题???