powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate Spring Transaction
49 сообщений из 49, показаны все 2 страниц
Hibernate Spring Transaction
    #39417124
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собссно вопрос в том что я через екзекьютор запускаю параллельные потоки, которые достают хибером объекты с базы, внутри которых есть лейзи связи. Транзакцию ставлю сверху метода (который в многопотоке) -- то толку ноль. тупо его игнорирует. Читаю стэковерфлоу вроде как должен пораждать вторую транзакцию. Но оно вообще игнорирует эту аннотацию. что я делаю не так? Можно конечно без транзакций решить всё. но это бэд вариант.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417143
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
Вероятно сами создали экземпляр ExecutorService?
Информация о транзакциях хранится в ThreadLocal. Хранит её там Spring. Про потоки которые вы создали самостоятельно Spring ничего не знает. И информацию о транзакциях в ваших потоках он получить никак не может.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417157
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417166
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
Вероятно сами создали экземпляр ExecutorService?
Информация о транзакциях хранится в ThreadLocal. Хранит её там Spring. Про потоки которые вы создали самостоятельно Spring ничего не знает. И информацию о транзакциях в ваших потоках он получить никак не может.
да, сам создал. если через репозиторий работать - то сохранить прочитать всё хорошо )) а с транзакциями беда. :) можно еще сейшн.геткуррентсейшн... и дальше по цепочке - но тогда получается лютый хардкод. Правда, работает.

хорошо, а как через тредлокл передать эту инфу?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417205
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за асинк. по ходу то, что надо. сделал метод асинк, возвращающий футуру.

цель была распарсить большой документ. сделал через мап-редьюс, разбив на куски, раздав куски на разные потоки, потом собрав всё в кучу. не уверен впрочем, что правильно. но вроде пашет :)
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417221
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrспасибо за асинк. по ходу то, что надо)
Тоже некогда читать мануал? Привёл же ссылку.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417231
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

не... оказывается не работает. тупо игнорирует транзакшнл вообще. если делаю через асинк - то вообще к базе доступа нету. никакого. ни с транзакцией ни без. если через екзекутор без асинка - то хоть без транзакций доступ есть.

навешивать аннотации транзакшнл - бесполезно.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417237
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicznatanabrahamjrспасибо за асинк. по ходу то, что надо)
Тоже некогда читать мануал? Привёл же ссылку.
так нет там ничего про асинк и транзакшнл. я конечно могу поднять персистанз контекст и всё такое. но мне кажется что это через чур.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417253
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
34.4.3 The @Async annotation
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417297
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417298
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
natanabrahamjr,
Похоже тут решали вашу проблему
https://m.habrahabr.ru/post/228953/
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417325
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionernatanabrahamjr,
Похоже тут решали вашу проблему
https://m.habrahabr.ru/post/228953/

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

сейчас в общем-то пришел к тому, от чего ушел - при асинк доступ к базе есть. ставлю аннотацию транзакшнл - вообще всё работать перестает. пишет ошибка скл запроса не может найти таблицу.

конечно по особому счету есть два пути это обойти - сделать игер на нужных полях, тупо сделать запрос с другой стороны, или через контекст обращаться. но все три пути рушат архитектуру и делают код страшным...

продолжаю копать..
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417326
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
говорит вот это:

авторjava.util.concurrent.ExecutionException: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSe

происходит только когда есть анноташка асинк+транзакшнл. если либо то либо то - то всё раотает :)
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417328
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrпродолжаю копать..
у вас документ такой большой что не вобрать его в оперативку и потом парсить?
Зачем вообще транзакции от СУБД + асинхронка?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417348
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123natanabrahamjrпродолжаю копать..
у вас документ такой большой что не вобрать его в оперативку и потом парсить?
Зачем вообще транзакции от СУБД + асинхронка?
у меня локально не большой. а на проде большой. заказчик так хочет подстраховаться - резать документ на части и обсчитывать по частям - этакий мап-редьюс. на самом деле, сейчас загвоздка в том, что я считываю объект с базы, а в нем есть лейзи связь на другой. и именно она всё ложит.

...сделал как на хабре. зараза. не хочет. как только добавляю транзакшн темплейт-екзекьют - всё ломается. :) аннотация транзакшнл делает тоже самое.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   @Autowired
    protected PlatformTransactionManager transactionManager;

    @Async
    public Future<String> parseDocument(List<Payment> payments, String countryCode) {
        final TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
        StringBuilder sb = new StringBuilder();
        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {



варианты воркэраунда есть. но хочу сделать по-человечески.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417361
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrзаказчик так хочет подстраховаться - резать документ на части и обсчитывать по частям - этакий мап-редьюс. на самом деле,
мап-редьюс почитал концепцию - первый главный узел режет на куски задачу и решает проблему с вашими ссылками между кусков докумта.
Чудес не бывает. Либо качаете всё в оперативку (жёсткий твёрдоцельный диск) и отдаёте куски на обработку.
Либо блокируете документа на изменение (снимок) и опять спокойно парсите.
Причём при снимке плевать на то сколько у вас там транзакций. Они все только читают.
....
Может вам тип БД тогда пересматривать? Под такие БОЛЬШИЕ документы "Вики-подобные".
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417362
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrно хочу сделать по-человечески.
"по человечески" - это когда заказчик может понять концепцию простыми словами в ворд файле на A4))
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417380
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все понятно что можно и так и сяк. Вопрос все же как сделать транзакции в потоке.. не может же быть что так никто не делает.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417400
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrтранзакции в потоке.. не может же быть что так никто не делает.
в поток передают потокозащищённый объект Connection (драйвера) и продолжают в той же транзакции.
Либо создают новый объект и стартуют новую.
А так ты IMHO переключаешь клавиши спринга как баловство пока не заработает.
Удачи!
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417441
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123natanabrahamjrтранзакции в потоке.. не может же быть что так никто не делает.
в поток передают потокозащищённый объект Connection (драйвера) и продолжают в той же транзакции.
Либо создают новый объект и стартуют новую.
А так ты IMHO переключаешь клавиши спринга как баловство пока не заработает.
Удачи!
возможно и так, но что делать то? не поднимать же внутри потока всю требуху, которую поднимаешь в спринге? ...или поднимать? просто если второй вариант, то преимущества потоков тупо пропадают..

у меня например, была как то задачка, клиент дергает ендпойнт, по нему инициируется процесс сохранения сотни тысяч уникальных объектов в базу. т.е. в рамках сессии клиента это сделать тупо нереально от слова совсем. я делал это ессно параллельным потоком, выкладывал в базу эту сотню тысяч объектов. но там как то без транзакций обходился. тупо через репозиторий сейв и до свидания.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417485
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjr,
так что там с п.п. 34.4.3 от Blazkowicz?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417540
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

у меня метод находится в другом классе, возвращает футуру.. сделал всё правильно. собссно, вы о чем?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417543
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вот одного понять ен могу почему ни у кого проблема эта толком не возникала? а) - так никто не делает. б) - я что-то совсем уж делаю не так
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417555
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrсобссно, вы о чем?
начни топик заново.
Я о том что Blazkowicz вроде решил твою проблему.
Ни у кого твоей проблемы нет)))) LOL
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417556
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjr,
и не забудь, что у профи выходные).
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417593
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123natanabrahamjr,
и не забудь, что у профи выходные).
Петр.. я создавал И через екзекутор (что с пакета канкарренси) И через аннотацию асинк . Уфф. яж не совсем дибил да ...НЕ ПАШЕТ :) вернее, не пашет так, как надо мне.

причем, если сам создаю через екзекутор то оно просто игнорирует аннотацию транзакшнл, если создаю через асинк - тогда с этой аннотацией тупо падает вообще.

раз ни у кого проблемы нет - может у меня проблема в конфиге?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417594
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrтогда с этой аннотацией тупо падает вообще.
Так тупо падает, что ни сообщения об ошибке ни стэка? А есть понимание что JDBC он однопоточный? Одна транзакция на разные потоки может не работать.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417603
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicznatanabrahamjrтогда с этой аннотацией тупо падает вообще.
Так тупо падает, что ни сообщения об ошибке ни стэка? А есть понимание что JDBC он однопоточный? Одна транзакция на разные потоки может не работать.


Код: java
1.
java.util.concurrent.ExecutionException: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet



говорит вот это вот.

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

я просто подсознательно понимаю, что всё просто. но где ошибка - не пойму.

я вот никак не разумею, такие задачи что надо на джей-мс выносить или какой-нибудь раббит-мк по хорошему?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417613
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrждбс однопоточный... и что?
Не, ничего. Всё нормально. Ты, походу, сам в курсе всего. Исключения хотя бы читать научись, чтобы источник его найти, а не самое верхнее сообщение об ошибке.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417724
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicznatanabrahamjrждбс однопоточный... и что?
Не, ничего. Всё нормально. Ты, походу, сам в курсе всего. Исключения хотя бы читать научись, чтобы источник его найти, а не самое верхнее сообщение об ошибке.
ну скажем так это самое громкое. вот еще есть такое:

авторCaused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet


еще ругается что не может найти таблицу.

собссно всё.. вы думаете, я бы тут мучался второй день если бы что-то читаемое было в логе?

меня вполне удовлетворит просто знание того что асинк+транзакшнл вообще и в принципе использовать МОЖНО. ну или не можно.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417727
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
источник исключения - это первое же обращение к базе через репозиторий внутри метода помеченного асинк и транзакшнл.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417734
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, судя по мануалу, работать должно как есть. но не работает.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417797
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем.. по ходу кажется решил.. :) точно должно работать как есть без дополнительной порнографии.

Определил бин екзекьютора в яваконфиге бута на concurrent.ThreadPoolTaskExecutor, и явно указал асинку пользоваться именно этим бином.

Аллиллуя!
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417897
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrв общем, судя по мануалу, работать должно как есть. но не работает.
Нет никаких "должно" - есть конкретные требования - один поток, одна транзакция. Не нужно пытаться продолжить текущую транзакцию в Async методе.
Нет никаких "не работает". Есть конкретные исключения, сообщения об ошибках или не верное диагностическое состояние. Что именно происходит? Исключение? В какой момент? stacktrace мы так и не увидим. Корневое сообщение об ошибке тоже, похоже, тайна покрытая мраком.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417925
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Блакович, так я и не пытался "продлить" транзакцию. я просто хотел иметь транзакцию, дабы был доступ к лейзи полям. пусть будет новая транзакция - ни разу не проблема. у меня же приложение ложилось, если я просто ставил анноташку транзакшнл.

фулстэктрейс в атаче.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417937
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНет никаких "должно" - есть конкретные требования - один поток, одна транзакция. Не нужно пытаться продолжить текущую транзакцию в Async методе.


А как это требование налазит на вложенные транзакции кстати?

То есть поможет OP propagation Requires_New ?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417946
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerBlazkowiczНет никаких "должно" - есть конкретные требования - один поток, одна транзакция. Не нужно пытаться продолжить текущую транзакцию в Async методе.


А как это требование налазит на вложенные транзакции кстати?

То есть поможет OP propagation Requires_New ?

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

блин.. прикрутил новый екзекьютор, так у меня приложение стало собираться вдвое дольше

а вообще, по большому счету там нет вообще никаких вложенных транзакций в спринге (в контексте одного треда). есть где транзакция открыфвается, и где она заканчивается. всё что внутри - тупо игнорируется. бо выкидывая ексепшн в любой из дочерних валится всё-равно всё. т.е. можно рассматривать всё как одна транзакция - остальные анноташечки - это только красота.

кстати, хороший вопрос для собеседования:

у вас есть аспект до метода, у вас есть метод, метод помечен транзакцией. во время выполнения аспекта у вас выбрасывается эксепшн - что будет с данными внутри метода? :)
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417962
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrБлакович, так я и не пытался "продлить" транзакцию.

А мне откуда знать. Я кода кроме как Transaction Template не видел. Где код, который создаёт новую транзакцию.

natanabrahamjr я просто хотел иметь транзакцию, дабы был доступ к лейзи полям.

OMFG. То есть мы ещё и транзакцию от сессии отличить не можем? Это как бы совершенно разные вещи. То что у них одинаковая область действия ещё не делает их одним и тем же.

natanabrahamjrпусть будет новая транзакция - ни разу не проблема.

Блин.
В чем конкретно задача? Мы на второй странице, вдруг, выяснили что нужна не транзакция а сессия. Что вообще значит "пусть будет"? Вы понятия не имеете как должна работать программа?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417964
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА как это требование налазит на вложенные транзакции кстати?
То есть поможет OP propagation Requires_New ?
Это не вложеная транзакция, а новая.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39417965
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrдабы был доступ к лейзи полям
То что JDBC не многопоточный повторять бесполезно? Всё равно будет проигнорировано?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418030
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

мы с вами кажется, не очень друг-друга понимаем. Я вас понимаю, и про ждбс и про транзакции и про всё остальное, что там в потрохах происходит.

давайте от всего этого абстрагируемся. а поднимемся на уровень выше - на уровень спринга с его структурой-архитектурой и т.п.

1) если я хочу получить объект с базы -- я делаю через репозиторий гет-ван запрос и получаю объект.
2) чтобы прочесть у этого объекта есть лейзи поля, то они будут доступны в двух случаях:

а) поле не лейзи, а игер.
б) мы запрашиваем лейзи поля в методе, помеченном транзакшнл.

--- как бы на этом ВСЁ. в детали вдаваться смысл есть только из академического интереса, ибо ломать спринговую архитектуру и начинать прыгать через голову, через контекст открывать-закрывать сессии, а уж тем более коннекты к базе - это имхо, ни разу не вариант, изобретать велосипеды с костылями.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418068
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerА как это требование налазит на вложенные транзакции кстати?
То есть поможет OP propagation Requires_New ?
Это не вложеная транзакция, а новая.

Сорри, новая.

Ну и видимо должно помочь, если если это допускают требования
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418251
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrЯ вас понимаю, и про ждбс и про транзакции и про всё остальное, что там в потрохах происходит.
Вы себе льстите.

natanabrahamjrа) поле не лейзи, а игер.
б) мы запрашиваем лейзи поля в методе, помеченном транзакшнл.

--- как бы на этом ВСЁ.

Потому что нихера не ВСЁ. Потому что Session aka EntityManager aka Unit of Work это не транзакция. Потому что ленивые свойства грузятся из сессии, а не транзакции. И грузятся они через JDBC, поэтому сессию нет смысла шарить между потоками.
Да, в спринге, по-умолчанию, сессия ORM и транзакция связаны друг с другом. Но это совершенно не повод их мешать в кучу.


natanabrahamjrв детали вдаваться смысл есть только из академического интереса
Ну-да, ну-да. Это сродни фразе "SQL знать не нужно, Hibernate сам всё сделает".

natanabrahamjrибо ломать спринговую архитектуру и начинать прыгать через голову, через контекст открывать-закрывать сессии, а уж тем более коннекты к базе - это имхо, ни разу не вариант, изобретать велосипеды с костылями.
Чтобы найти правильное решение нужно понимать что на самом деле происходит, а не разводить демагогию по поводы "архитектуры", не понимая даже что под этим подразумевается.

Теперь к решению.
Попробуйте получить текущую сессию и вызвать merge на объекте. После этого должны заработать ленивые свойства.
Вот тут пишут что @Async и @Transactional на одном методе уже починили.
Значит дело за малым - "переподключить" ленивую сущность к новой сессии.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418255
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerСорри, новая.
Ну и видимо должно помочь, если если это допускают требования
Да, должно и по-умолчанию работать с REQUIRE, потому как в новом потоке (@Async) всё равно нет старой транзакции, поэтому будет создана новая.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418262
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrфулстэктрейс в атаче.
Корневое и самое любопытное исключение
аттачorg.postgresql.util.PSQLException: ERROR: relation "donations" does not exist
А точно ленивые свойства грузятся без @Async? Либо таки дело не в Async, либо новый поток вообще не в ту базу законектился, что очень странно.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418307
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так я вам об этом и говорю. Там ощущение, что коннекта нет вообще. Без асинка всё работает прекрасно. С асинком и без анноташки транзакшнл - тоже всё работает. с аннотацией транзакшнл и без асинка тоже работает. с асинком + транзакшнл (либо над асинком либо в методе, вызывающемся из асинка) -- нет. выходит то, что вы видите.

Если я без асинка запускаю через обычный екзекутор (не спринг бин, а просто екзекутор, с методом, возвращающим футуру) - то с транзакшнл работает, но при обращении к лейзи связи - падает. говорит ноу сейшн.

Если я в этом методе без асинка ручками через ентити менеджер создаю сессию, далее дергаю сущность простым склом не закрывая сессию - все лейзи связи доступны (сущность типа как приаттаченая выходит). всё работает.


а теперь... если я в блоке конфигурации создаю ЯВНО езекутор, вернее, бин екзекутора, возвращающий тредпултаскекзекутор - то вуаля, всё замечательно пашет. даже асинку говорить не надо какой бин цеплять для асинхронного исполнения.
Причем, пашет в любой комбинации, в т.ч. с асинк+транзакшнл. в рамках метода, который я обозначил этими анноташками. Т.е. проблема, как бы, решена.



зы. спасибо в любом случае за помощь Вам. Я не претендую на глубокое знание всех процессов, проходящих где то там в дебрях. Только сверху. Полагаю, знать это в деталях конечно же надо, но через ентитименеджер фигачить сессии, скл запросы (на уровне сервиса) и т.п. - это уж слижком.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418310
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по моему вопросу.. я так полагаю, что у других он не возникал потому что у меня банально какие то особенности с конфигом непосредственно моего приложения.
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418331
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrа теперь... если я в блоке конфигурации создаю ЯВНО езекутор, вернее, бин екзекутора, возвращающий тредпултаскекзекутор - то вуаля, всё замечательно пашет. даже асинку говорить не надо какой бин цеплять для асинхронного исполнения.
Вот это совсем странно. Spring же там свой экзекутор использует, если его не указать явно. Какая между ними принципиальная разница?
...
Рейтинг: 0 / 0
Hibernate Spring Transaction
    #39418349
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за поток такой ?
аттач[pool-27-thread-1] o.h.e.j.b.i.AbstractBatchImpl HHH000010: On release of batch it still contained JDBC statements
Может там, таки транзакция или сессия умудрилась зашарится между потоками, потому как
ERROR: relation does not exist
происходит далее как в асинхронных методах SimpleAsyncTaskExecutor-XX, так и в основном методе из web.
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate Spring Transaction
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]