迭代中的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();