Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2015/09/09 (Wed)

Guice-Persistで、トランザクションが有効にならない その2

| Guice-Persistで、トランザクションが有効にならない その2 - ひとり開発日記。 を含むブックマーク はてなブックマーク - Guice-Persistで、トランザクションが有効にならない その2 - ひとり開発日記。

Google Guice/Guice-Persist*1 + EclipseLink(JPA) + Querydsl でアプリケーションを作っていて、「あれれ?トランザクションが有効にならない」と言うような目に…。

@Singleton
public class AccountLogic {

	@Transactional
	public void add(String name, String mail) {
		// do something
	}
}

これ、最初どこが悪いのか、サッパリだったんですけどね。

早い話、トランザクション境界メソッドに付ける @Transactional は、 @com.google.inject.persist.Transactional が正解。 JTA標準の @javax.transaction.Transactional だと動かない、と言うことです。 EclipseLinkをMavenで入れると、依存関係解決で @javax.transaction.* が入っちゃうので、誤りがち、と言う話でした。

*1Guice 4.0

トラックバック - http://program.g.hatena.ne.jp/halflite/20150909