#java #spring #spring-transactions
#java #spring #spring-транзакции
Вопрос:
Когда я пытаюсь удалить данные из моего класса обслуживания с помощью пользовательского метода deleteBy () в репозитории данных spring, выдается следующая ошибка.
javax.постоянство.Исключение TransactionRequiredException: Нет EntityManager с фактической транзакцией, доступной для текущего потока — не удается надежно обработать вызов ‘remove’
Я попытался с помощью метода создания и класса обслуживания @Transactional. Тогда члены autowire получают значение null. Они были инициализированы без @Transactional.
Ответ №1:
Загрузите все данные, которые необходимо удалить. Получите byId(id); И используйте эту коллекцию для выполнения операции deleteAll(). Это решает проблему.
Ответ №2:
Сначала вы должны загрузить объект
Ответ №3:
У меня была такая же проблема, но после того, как я прокомментировал только метод с помощью @Transactional
, он сработал.
@Repository()
interface UserRepository : CrudRepository<User, Long> {
@Transactional
fun deleteAllByCpf(cpf: String)
}
В моем случае я использую Springboot с Kotlin.
Комментарии:
1. Это было бы хорошим способом вместо загрузки объектов для удаления, как упоминалось в других ответах.