У меня есть проект, который использует myBatis для постоянства.Метод «А», приведенный ниже, работал нормально, пока я не добавил некоторые внешние ключи и не преобразовал свою таблицу из myISAM в innoDB.После преобразования метод «А» будет молчаливо проваливаться, даже в журналах нет предупреждения.После преобразования только метод "B" делает успешную вставку.Оба метода записывают правильный sql в журналы, но работает только буква "B".
Может кто-нибудь объяснить мне, почему мне нужно сделать коммит сейчас, но ранее не нужно было делать коммит?
//doesnt work, but worked previously
public void A(Role role) {
SqlSession session = sqlSessionFactory.openSession();
try {
RoleMapper mapper = session.getMapper(RoleMapper.class);
mapper.updateByPrimaryKeySelective(role);
}catch(Exception e){
logger.error(e);
} finally {
session.close();
}
return;
}
//works correctly, but why?
public void B(Role role) {
SqlSession session = sqlSessionFactory.openSession();
try {
RoleMapper mapper = session.getMapper(RoleMapper.class);
mapper.updateByPrimaryKeySelective(role);
session.commit();
}catch(Exception e){
logger.error(e);
} finally {
session.close();
}
return;
}