泣き虫プログラマーのメモ書き

文系出身SEが、めそめそしながら綴るメモ。

はまった:外部プロジェクトの.jarと作成中のプロジェクトが指すSqlSessionが異なるとき

内容

batchのプロジェクトを実行したら、トランザクションエラーになった。

sorekara doshitano...
どちらかを親として、bean idが違えど、実態は同じsqlSessionにする。

■launch-context.xml

<!-- 実行するプロジェクトのsqlSession -->
<bean id="sqlSessionBatch" class="org.mybatis.spring.SqlSessionTemplate">
  <constructor-arg index="0" ref="sqlSessionFactory" />
  <constructor-arg index="1" value="BATCH" />
</bean>

<!-- 外部参照jarファイルのsqlSession -->
<bean id="sqlSession" parent="sqlSessionBatch" />

要因

launch-context.xmlに、参照する外部プロジェクト(api用)の.jarファイルで使われているsqlSessionと、実行するプロジェクトが指すsqlSessionが異なっていた。
そのことにより、jarの中で参照するDaoがトランザクションエラーになり、DBの値を取りに行くことができなかった。

異なるsqlSessionが一緒に動いてしまうから、
トランザクションエラーになるみたい。