Не удается выполнить операцию удаления с помощью пользовательского метода deleteBy в репозитории данных spring

#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. Это было бы хорошим способом вместо загрузки объектов для удаления, как упоминалось в других ответах.