Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代中的Hibernate事务发生错误_Hibernate_Transactions - Fatal编程技术网

迭代中的Hibernate事务发生错误

迭代中的Hibernate事务发生错误,hibernate,transactions,Hibernate,Transactions,我刚开始冬眠。 我想在迭代器中使用事务,所以我喜欢这样做(没有业务逻辑): 这段代码在第一时间就可以工作。但是,当我重新启动此程序时,它会发生锁定等待超时超过 虽然我已将innodb\u lock\u wait\u timeout设置为120,但结果相同。 怎么回事 为什么直接在代码中打开会话和事务?为什么不使用注释?在第二个版本中,在循环之后:tx=session.beginTransaction()。您是否可以发布跟踪以使锁定等待超时超过?在catch之后使用finally{session.

我刚开始冬眠。 我想在迭代器中使用事务,所以我喜欢这样做(没有业务逻辑):

这段代码在第一时间就可以工作。但是,当我重新启动此程序时,它会发生
锁定等待超时超过

虽然我已将innodb\u lock\u wait\u timeout设置为120,但结果相同。

怎么回事

为什么直接在代码中打开会话和事务?为什么不使用注释?在第二个版本中,在循环之后:
tx=session.beginTransaction()。您是否可以发布跟踪以使
锁定等待超时超过
?在catch之后使用finally{session.close();},并且第二个事务不在try catch中。我不太清楚-->的语法{
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for {
    try {
        Something something = session.get(Something.class, id);
        something.setX(X);
        session.save(something)
        tx.commit(); <-- error occurs after iterated once.
    catch { tx.rollback(); }
}
Something something2 = session.get(Something.class, id2);
something2.setX(X);
session.save(something2);
tx.commit():
session.close();
Session session = sessionFactory.openSession();
Transaction tx;
for {
    try {
        tx = session.beginTransaction();
        Something something = session.get(Something.class, id);
        something.setX(X);
        session.save(something)
        tx.commit();
    catch { tx.rollback(); }
}
session.beginTransaction();
Something something2 = session.get(Something.class, id2);
something2.setX(X);
session.save(something2);
tx.commit():
session.close();