1 быстрый вопрос о транзакциях репозиториев JPA Spring. У меня есть служба, которая не помечена как транзакционная, и вызывает метод репозитория JPA Spring
userRegistrationRepository.deleteByEmail(email);
И он определяется как
@Repository
public interface UserRegistrationRepository extends JpaRepository<UserRegistration, Long> {
UserRegistration findByEmail(String email);
void deleteByEmail(String email);
}
Проблема заключается в том, что она не работает с "No EntityManager с реальной транзакцией, доступной для текущего потока", не может надежно обработать "удалить" вызов, а вложенное исключение - исключение javax.persistence.TransactionRequiredException.
Хорошо, я могу решить это, отметив метод или deleteByEmail (..) как транзакционный, но я просто не могу понять, почему он сбой теперь. В документации Spring явно указано, что "методы CRUD на экземплярах репозитория по умолчанию являются транзакционными". (http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#transactions), но, по-видимому, это не так... Итак, это утверждение относится только к членам CrudRepository
?
ps: для Spring данных JPA 1.9.4