永続化のために myBatis を使用するプロジェクトがあります。以下の方法「A」は、いくつかの外部キーを追加し、テーブルを myISAM から innoDB に変換するまでは問題なく機能していました。変換後、メソッド "A" は警告なしでログに記録されずに失敗します。変換後、メソッド「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;
}