Size: a a a

Spring Framework and more

2019 November 12

П

Плющов Олександр in Spring Framework and more
Перечитал, и так и не понял, зачем юзать вручную управление транзакциями. Это как раз тот момент когда все делаешь сам и чего-то простого не видишь...
источник

П

Плющов Олександр in Spring Framework and more
Хорошо. Чем не подойдет @Transactional(rollbackFor = ...)?
источник

ВС

Владислав Султаняров in Spring Framework and more
Плющов Олександр
Хорошо. Чем не подойдет @Transactional(rollbackFor = ...)?
просто повесить аннотацию в моей ситуации не поможет, тк транзакция в таком случае будет выполняться только в рамках скоупа метода, но скоуп закончится тогда, когда достигнет последней строки( вернет completablefuture). А до whenComplete она просто не дотянется
источник

П

Плющов Олександр in Spring Framework and more
Хм. Я так понимаю что ставить аннотацию над методом в котором расположена данная конструкция(с when) запрещено?
источник

ВС

Владислав Султаняров in Spring Framework and more
не запрещено, это не будет работать
источник

П

Плющов Олександр in Spring Framework and more
А почему? Это для себя... Прервать транзакцию можно еще выбросив кастомное исключение которое от отнаследовано от runtimeexception
источник

ВС

Владислав Султаняров in Spring Framework and more
потому что транзакция закончится тогда, когда произойдет возврат из метода, на котором висит аннотация
источник

ВС

Владислав Султаняров in Spring Framework and more
мы сделал возврат completableFuture, метод закончился, транзакция закомитилась
источник

ВС

Владислав Султаняров in Spring Framework and more
а when уже выполняется в другое время
пытался вешать на метод, который выполняется в when, не помогло(вот здесь не могу сказать, почему так)
источник

ВС

Владислав Султаняров in Spring Framework and more
поэтому в ручную пришлось
источник

М

Михаил in Spring Framework and more
Мне кажется проблема кроется где-то там, где написано какие-то действия с бд в комментах
источник

П

Плющов Олександр in Spring Framework and more
Транзакция заканчивается только когда логически метод выполнился или посредством выполнения исключения выше названного. В том случае если persistentcontext настроен...
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Владислав Султаняров
просто повесить аннотацию в моей ситуации не поможет, тк транзакция в таком случае будет выполняться только в рамках скоупа метода, но скоуп закончится тогда, когда достигнет последней строки( вернет completablefuture). А до whenComplete она просто не дотянется
так вы же транзакцию создаете только ради метода handleInputTransaction. Это на него надо аннотацию @Transactional вешать.

только его нужно вынести в отдельный бин и сделать паблик. Иначе аннотация не сработает.
источник

П

Плющов Олександр in Spring Framework and more
Ruslan Stelmachenko
так вы же транзакцию создаете только ради метода handleInputTransaction. Это на него надо аннотацию @Transactional вешать.

только его нужно вынести в отдельный бин и сделать паблик. Иначе аннотация не сработает.
Если там persistentcontext extended, то нет
источник

RS

Ruslan Stelmachenko in Spring Framework and more
что именно "нет"?
источник

П

Плющов Олександр in Spring Framework and more
Не сработает
источник

ВС

Владислав Султаняров in Spring Framework and more
Ruslan Stelmachenko
так вы же транзакцию создаете только ради метода handleInputTransaction. Это на него надо аннотацию @Transactional вешать.

только его нужно вынести в отдельный бин и сделать паблик. Иначе аннотация не сработает.
вот это как раз стоит мне проверить
тк я вешал просто на метод
источник

ВС

Владислав Султаняров in Spring Framework and more
просто если не выносить в бин, то так не работает
источник

RS

Ruslan Stelmachenko in Spring Framework and more
Плющов Олександр
Не сработает
все равно не понял что не сработает
источник

ВС

Владислав Султаняров in Spring Framework and more
уже проверил
источник