有關Spring JPA存儲庫事務性的1個快速問題。 我有沒有被標記爲事務性和調用春天JPA庫法Spring JPA存儲庫事務性
userRegistrationRepository.deleteByEmail(email);
一個服務,它被定義爲
@Repository
public interface UserRegistrationRepository extends JpaRepository<UserRegistration, Long> {
UserRegistration findByEmail(String email);
void deleteByEmail(String email);
}
的問題是,它不能與「沒有EntityManager的實際交易可用於當前線程 - 無法可靠地處理'刪除'調用;嵌套異常是javax.persistence.TransactionRequiredException「異常。
好吧,我可以通過標記服務或deleteByEmail(..)方法事務解決這個問題,但我只是不明白爲什麼現在崩潰。 Spring文檔明確指出:「默認情況下,存儲庫實例上的CRUD方法是事務性的,」(http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#transactions),但顯然這不是......因此,此語句是否僅與CrudRepository
的成員有關?
ps:這是春季數據JPA 1.9.4