Spring jpa @transaction не откатывается - PullRequest
0 голосов
/ 12 февраля 2019

Мой проект столкнулся с проблемой, что транзакции Spring JPA не будут откатываться.Основой проекта является весна MVC + весна + весна данных JPA + оракул.Я искал много информации в Интернете, но все еще не смог решить мою проблему.

Я пробовал много способов, таких как установка метода на public или добавление rollbackFor = Exception.class в @Transactional, но этовсе еще не может быть решена.

Вот мой код

Контроллер

@RequestMapping(value = {"addUser"}, method = RequestMethod.GET)
    @ResponseBody
    public Boolean insertUser() throws Exception{
        User user = new User();
        user.setId(10);
        userServiceI.addUser(user);
        return true;
    }

Сервис

Сервисный интерфейс

public interface UserServiceI {
    void addUser(User user);
}

Класс реализации сервиса

@Service
public class UserService implements UserServiceI {

    @Autowired
    public UserDao userDao;

    @Autowired
    PersonService personService;

    @Override
    @Transactional(propagation= Propagation.REQUIRED,rollbackFor=Exception.class)
    public void addUser(User user){
        User user1 = userDao.saveAndFlush(user);
        System.out.println(1/0);
    }
}

Dao

public interface UserDao extends JpaRepository<User,Integer> {
}

Мой @Transactional метод загружает мой класс реализации Service, который пишет подверженный ошибкам 1/0.Я ожидаю, что транзакция откатится после ошибки, но это не так.

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

если вы находитесь в контексте проекта springboot, вы должны добавить @EnableTransactionManagement в свой класс конфигурации

, если это не проект Springboot, добавьте в свой файл конфигурации xml (где объявлено сканирование компонентов)управляемый аннотациями тег

0 голосов
/ 12 февраля 2019

О, я решил это, потому что пропустил в applicationContext.xml.Я написал только весной-mvc.xml.Я всегда думал, что мне нужно написать это только в одном из них.Пока я не увидел эту статью labreeze.iteye.com/blog/2359957.Я слишком счастлив и небрежен.

0 голосов
/ 12 февраля 2019

Добавление @Repository в ваш UserDao может быть возможным исправлением этой ошибки.
Не уверен, но это может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...