Transaction ts2;
while (true) {
    ts2 = session2.beginTransaction();
    ...;变为:
Transaction ts2 = session2.beginTransaction();
while (true) {
    ...;

解决方案 »

  1.   

    楼上说的有问题吧,你看我的ts2.commit();是在死循环里的,那Transaction ts2 = session2.beginTransaction();怎么又能在外面定义呢还请问大家一个问题:我的数据量比较大,字段也比较多,以上方法是不是也适用,感觉查询和插入速度有点慢
      

  2.   

    你调用这段代码的方法是不是放在线程中! 不是的话这段代码不会间隔执行的。 
    这句话最好放在外面 ts2 = session2.beginTransaction();  不然的话每次都调用了。 !
      

  3.   

    这个东东,还用Hibernate ,这么插入肯定慢。insert into test2 select * from test1 where id not in (select id from test2)
      

  4.   

    HIBERNATE 在这里就不适合了,直接 用HIBERATE调用SQL
    insert into test2 select * from test1 where id not in (select id from test2)
      

  5.   

    大家好像是没怎么看懂吧, ts2 = session2.beginTransaction();怎么能写在外面呢,下一次循环怎么办呢。
    我之所以这么写是因为我现在的test表中的两个字段在test2已改变了数据类型,而且在test2表中又增加了1个字段,是利用test表中的1个字段查询test3表中的1个字段的结果,然后插入test2表的。
    实在不好意思,一开始没说清楚,后来又改的,还请各位高手再帮忙看看
    还有就是我这种方法应该可以的,那非得使用线程吗?怎么样能提高速度呢