Spring JPAリポジトリのトランザクション性について1つの簡単な質問。 私はトランザクションとしてマークされていないサービスがあり、春JPAリポジトリ方法Spring JPAリポジトリトランザクション性
userRegistrationRepository.deleteByEmail(email);
を呼び出し、問題は、それは実際の取引で「ないのEntityManagerで失敗したということです
@Repository
public interface UserRegistrationRepository extends JpaRepository<UserRegistration, Long> {
UserRegistration findByEmail(String email);
void deleteByEmail(String email);
}
として定義されます現在のスレッドで利用可能 - 確実に 'remove'コールを処理できません;入れ子になった例外はjavax.persistence.TransactionRequiredException "例外です。
[OK]を、私はサービスまたはdeleteByEmail(..)トランザクションとして方法をマークすることによってそれを解決することができますが、それが今クラッシュし、なぜ私は理解できません。 Springのドキュメントには、「リポジトリインスタンスのCRUDメソッドがデフォルトでトランザクションであることが明示されています。」(http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#transactions)、明らかにこれはそうではありません...このステートメントはCrudRepository
のメンバのみに関連していますか?
ps:これはSpringデータ用です。JPA 1.9.4