|
|
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
собссно вопрос в том что я через екзекьютор запускаю параллельные потоки, которые достают хибером объекты с базы, внутри которых есть лейзи связи. Транзакцию ставлю сверху метода (который в многопотоке) -- то толку ноль. тупо его игнорирует. Читаю стэковерфлоу вроде как должен пораждать вторую транзакцию. Но оно вообще игнорирует эту аннотацию. что я делаю не так? Можно конечно без транзакций решить всё. но это бэд вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 17:29 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html Вероятно сами создали экземпляр ExecutorService? Информация о транзакциях хранится в ThreadLocal. Хранит её там Spring. Про потоки которые вы создали самостоятельно Spring ничего не знает. И информацию о транзакциях в ваших потоках он получить никак не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 18:03 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, может http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/Async.html ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 18:20 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicz https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html Вероятно сами создали экземпляр ExecutorService? Информация о транзакциях хранится в ThreadLocal. Хранит её там Spring. Про потоки которые вы создали самостоятельно Spring ничего не знает. И информацию о транзакциях в ваших потоках он получить никак не может. да, сам создал. если через репозиторий работать - то сохранить прочитать всё хорошо )) а с транзакциями беда. :) можно еще сейшн.геткуррентсейшн... и дальше по цепочке - но тогда получается лютый хардкод. Правда, работает. хорошо, а как через тредлокл передать эту инфу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 18:30 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
спасибо за асинк. по ходу то, что надо. сделал метод асинк, возвращающий футуру. цель была распарсить большой документ. сделал через мап-редьюс, разбив на куски, раздав куски на разные потоки, потом собрав всё в кучу. не уверен впрочем, что правильно. но вроде пашет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 19:33 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrспасибо за асинк. по ходу то, что надо) Тоже некогда читать мануал? Привёл же ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 21:00 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, не... оказывается не работает. тупо игнорирует транзакшнл вообще. если делаю через асинк - то вообще к базе доступа нету. никакого. ни с транзакцией ни без. если через екзекутор без асинка - то хоть без транзакций доступ есть. навешивать аннотации транзакшнл - бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 23:10 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicznatanabrahamjrспасибо за асинк. по ходу то, что надо) Тоже некогда читать мануал? Привёл же ссылку. так нет там ничего про асинк и транзакшнл. я конечно могу поднять персистанз контекст и всё такое. но мне кажется что это через чур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 23:25 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
34.4.3 The @Async annotation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 00:10 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
questionernatanabrahamjr, Похоже тут решали вашу проблему https://m.habrahabr.ru/post/228953/ да... там в общем то то, что я уже делал. я и так могу открыть через контекст.. но это ужас получается, и вообще шиворот на выворот.. сейчас в общем-то пришел к тому, от чего ушел - при асинк доступ к базе есть. ставлю аннотацию транзакшнл - вообще всё работать перестает. пишет ошибка скл запроса не может найти таблицу. конечно по особому счету есть два пути это обойти - сделать игер на нужных полях, тупо сделать запрос с другой стороны, или через контекст обращаться. но все три пути рушат архитектуру и делают код страшным... продолжаю копать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 13:06 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
говорит вот это: автор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 происходит только когда есть анноташка асинк+транзакшнл. если либо то либо то - то всё раотает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 13:14 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrпродолжаю копать.. у вас документ такой большой что не вобрать его в оперативку и потом парсить? Зачем вообще транзакции от СУБД + асинхронка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 13:25 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123natanabrahamjrпродолжаю копать.. у вас документ такой большой что не вобрать его в оперативку и потом парсить? Зачем вообще транзакции от СУБД + асинхронка? у меня локально не большой. а на проде большой. заказчик так хочет подстраховаться - резать документ на части и обсчитывать по частям - этакий мап-редьюс. на самом деле, сейчас загвоздка в том, что я считываю объект с базы, а в нем есть лейзи связь на другой. и именно она всё ложит. ...сделал как на хабре. зараза. не хочет. как только добавляю транзакшн темплейт-екзекьют - всё ломается. :) аннотация транзакшнл делает тоже самое. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. варианты воркэраунда есть. но хочу сделать по-человечески. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 14:40 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrзаказчик так хочет подстраховаться - резать документ на части и обсчитывать по частям - этакий мап-редьюс. на самом деле, мап-редьюс почитал концепцию - первый главный узел режет на куски задачу и решает проблему с вашими ссылками между кусков докумта. Чудес не бывает. Либо качаете всё в оперативку (жёсткий твёрдоцельный диск) и отдаёте куски на обработку. Либо блокируете документа на изменение (снимок) и опять спокойно парсите. Причём при снимке плевать на то сколько у вас там транзакций. Они все только читают. .... Может вам тип БД тогда пересматривать? Под такие БОЛЬШИЕ документы "Вики-подобные". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 15:47 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrно хочу сделать по-человечески. "по человечески" - это когда заказчик может понять концепцию простыми словами в ворд файле на A4)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 15:49 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Это все понятно что можно и так и сяк. Вопрос все же как сделать транзакции в потоке.. не может же быть что так никто не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 17:06 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrтранзакции в потоке.. не может же быть что так никто не делает. в поток передают потокозащищённый объект Connection (драйвера) и продолжают в той же транзакции. Либо создают новый объект и стартуют новую. А так ты IMHO переключаешь клавиши спринга как баловство пока не заработает. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 19:04 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123natanabrahamjrтранзакции в потоке.. не может же быть что так никто не делает. в поток передают потокозащищённый объект Connection (драйвера) и продолжают в той же транзакции. Либо создают новый объект и стартуют новую. А так ты IMHO переключаешь клавиши спринга как баловство пока не заработает. Удачи! возможно и так, но что делать то? не поднимать же внутри потока всю требуху, которую поднимаешь в спринге? ...или поднимать? просто если второй вариант, то преимущества потоков тупо пропадают.. у меня например, была как то задачка, клиент дергает ендпойнт, по нему инициируется процесс сохранения сотни тысяч уникальных объектов в базу. т.е. в рамках сессии клиента это сделать тупо нереально от слова совсем. я делал это ессно параллельным потоком, выкладывал в базу эту сотню тысяч объектов. но там как то без транзакций обходился. тупо через репозиторий сейв и до свидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 22:49 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, так что там с п.п. 34.4.3 от Blazkowicz? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 00:36 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123, у меня метод находится в другом классе, возвращает футуру.. сделал всё правильно. собссно, вы о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:18 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
я вот одного понять ен могу почему ни у кого проблема эта толком не возникала? а) - так никто не делает. б) - я что-то совсем уж делаю не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:35 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrсобссно, вы о чем? начни топик заново. Я о том что Blazkowicz вроде решил твою проблему. Ни у кого твоей проблемы нет)))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:55 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, и не забудь, что у профи выходные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:55 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123natanabrahamjr, и не забудь, что у профи выходные). Петр.. я создавал И через екзекутор (что с пакета канкарренси) И через аннотацию асинк . Уфф. яж не совсем дибил да ...НЕ ПАШЕТ :) вернее, не пашет так, как надо мне. причем, если сам создаю через екзекутор то оно просто игнорирует аннотацию транзакшнл, если создаю через асинк - тогда с этой аннотацией тупо падает вообще. раз ни у кого проблемы нет - может у меня проблема в конфиге? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 14:50 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrтогда с этой аннотацией тупо падает вообще. Так тупо падает, что ни сообщения об ошибке ни стэка? А есть понимание что JDBC он однопоточный? Одна транзакция на разные потоки может не работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 14:54 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicznatanabrahamjrтогда с этой аннотацией тупо падает вообще. Так тупо падает, что ни сообщения об ошибке ни стэка? А есть понимание что JDBC он однопоточный? Одна транзакция на разные потоки может не работать. Код: java 1. говорит вот это вот. ждбс однопоточный... и что? есть приложение, есть контейнер, который генерит эти потоки десятками. и ничего не мешает ждбсу работать не зная, что он однопоточный. я просто подсознательно понимаю, что всё просто. но где ошибка - не пойму. я вот никак не разумею, такие задачи что надо на джей-мс выносить или какой-нибудь раббит-мк по хорошему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 15:48 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrждбс однопоточный... и что? Не, ничего. Всё нормально. Ты, походу, сам в курсе всего. Исключения хотя бы читать научись, чтобы источник его найти, а не самое верхнее сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 16:23 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
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 еще ругается что не может найти таблицу. собссно всё.. вы думаете, я бы тут мучался второй день если бы что-то читаемое было в логе? меня вполне удовлетворит просто знание того что асинк+транзакшнл вообще и в принципе использовать МОЖНО. ну или не можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 21:33 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
источник исключения - это первое же обращение к базе через репозиторий внутри метода помеченного асинк и транзакшнл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 21:35 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
в общем, судя по мануалу, работать должно как есть. но не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 21:44 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
в общем.. по ходу кажется решил.. :) точно должно работать как есть без дополнительной порнографии. Определил бин екзекьютора в яваконфиге бута на concurrent.ThreadPoolTaskExecutor, и явно указал асинку пользоваться именно этим бином. Аллиллуя! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 00:16 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrв общем, судя по мануалу, работать должно как есть. но не работает. Нет никаких "должно" - есть конкретные требования - один поток, одна транзакция. Не нужно пытаться продолжить текущую транзакцию в Async методе. Нет никаких "не работает". Есть конкретные исключения, сообщения об ошибках или не верное диагностическое состояние. Что именно происходит? Исключение? В какой момент? stacktrace мы так и не увидим. Корневое сообщение об ошибке тоже, похоже, тайна покрытая мраком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 10:35 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Блакович, так я и не пытался "продлить" транзакцию. я просто хотел иметь транзакцию, дабы был доступ к лейзи полям. пусть будет новая транзакция - ни разу не проблема. у меня же приложение ложилось, если я просто ставил анноташку транзакшнл. фулстэктрейс в атаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 11:33 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНет никаких "должно" - есть конкретные требования - один поток, одна транзакция. Не нужно пытаться продолжить текущую транзакцию в Async методе. А как это требование налазит на вложенные транзакции кстати? То есть поможет OP propagation Requires_New ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 11:42 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
questionerBlazkowiczНет никаких "должно" - есть конкретные требования - один поток, одна транзакция. Не нужно пытаться продолжить текущую транзакцию в Async методе. А как это требование налазит на вложенные транзакции кстати? То есть поможет OP propagation Requires_New ? мануал говорит что выходя в параллельный тред область видимости "родительской" транзакции заканчивается. блин.. прикрутил новый екзекьютор, так у меня приложение стало собираться вдвое дольше а вообще, по большому счету там нет вообще никаких вложенных транзакций в спринге (в контексте одного треда). есть где транзакция открыфвается, и где она заканчивается. всё что внутри - тупо игнорируется. бо выкидывая ексепшн в любой из дочерних валится всё-равно всё. т.е. можно рассматривать всё как одна транзакция - остальные анноташечки - это только красота. кстати, хороший вопрос для собеседования: у вас есть аспект до метода, у вас есть метод, метод помечен транзакцией. во время выполнения аспекта у вас выбрасывается эксепшн - что будет с данными внутри метода? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 11:53 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrБлакович, так я и не пытался "продлить" транзакцию. А мне откуда знать. Я кода кроме как Transaction Template не видел. Где код, который создаёт новую транзакцию. natanabrahamjr я просто хотел иметь транзакцию, дабы был доступ к лейзи полям. OMFG. То есть мы ещё и транзакцию от сессии отличить не можем? Это как бы совершенно разные вещи. То что у них одинаковая область действия ещё не делает их одним и тем же. natanabrahamjrпусть будет новая транзакция - ни разу не проблема. Блин. В чем конкретно задача? Мы на второй странице, вдруг, выяснили что нужна не транзакция а сессия. Что вообще значит "пусть будет"? Вы понятия не имеете как должна работать программа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 12:09 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
questionerА как это требование налазит на вложенные транзакции кстати? То есть поможет OP propagation Requires_New ? Это не вложеная транзакция, а новая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 12:10 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrдабы был доступ к лейзи полям То что JDBC не многопоточный повторять бесполезно? Всё равно будет проигнорировано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 12:12 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, мы с вами кажется, не очень друг-друга понимаем. Я вас понимаю, и про ждбс и про транзакции и про всё остальное, что там в потрохах происходит. давайте от всего этого абстрагируемся. а поднимемся на уровень выше - на уровень спринга с его структурой-архитектурой и т.п. 1) если я хочу получить объект с базы -- я делаю через репозиторий гет-ван запрос и получаю объект. 2) чтобы прочесть у этого объекта есть лейзи поля, то они будут доступны в двух случаях: а) поле не лейзи, а игер. б) мы запрашиваем лейзи поля в методе, помеченном транзакшнл. --- как бы на этом ВСЁ. в детали вдаваться смысл есть только из академического интереса, ибо ломать спринговую архитектуру и начинать прыгать через голову, через контекст открывать-закрывать сессии, а уж тем более коннекты к базе - это имхо, ни разу не вариант, изобретать велосипеды с костылями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 13:06 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerА как это требование налазит на вложенные транзакции кстати? То есть поможет OP propagation Requires_New ? Это не вложеная транзакция, а новая. Сорри, новая. Ну и видимо должно помочь, если если это допускают требования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 13:36 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrЯ вас понимаю, и про ждбс и про транзакции и про всё остальное, что там в потрохах происходит. Вы себе льстите. natanabrahamjrа) поле не лейзи, а игер. б) мы запрашиваем лейзи поля в методе, помеченном транзакшнл. --- как бы на этом ВСЁ. Потому что нихера не ВСЁ. Потому что Session aka EntityManager aka Unit of Work это не транзакция. Потому что ленивые свойства грузятся из сессии, а не транзакции. И грузятся они через JDBC, поэтому сессию нет смысла шарить между потоками. Да, в спринге, по-умолчанию, сессия ORM и транзакция связаны друг с другом. Но это совершенно не повод их мешать в кучу. natanabrahamjrв детали вдаваться смысл есть только из академического интереса Ну-да, ну-да. Это сродни фразе "SQL знать не нужно, Hibernate сам всё сделает". natanabrahamjrибо ломать спринговую архитектуру и начинать прыгать через голову, через контекст открывать-закрывать сессии, а уж тем более коннекты к базе - это имхо, ни разу не вариант, изобретать велосипеды с костылями. Чтобы найти правильное решение нужно понимать что на самом деле происходит, а не разводить демагогию по поводы "архитектуры", не понимая даже что под этим подразумевается. Теперь к решению. Попробуйте получить текущую сессию и вызвать merge на объекте. После этого должны заработать ленивые свойства. Вот тут пишут что @Async и @Transactional на одном методе уже починили. Значит дело за малым - "переподключить" ленивую сущность к новой сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 16:41 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
questionerСорри, новая. Ну и видимо должно помочь, если если это допускают требования Да, должно и по-умолчанию работать с REQUIRE, потому как в новом потоке (@Async) всё равно нет старой транзакции, поэтому будет создана новая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 16:42 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrфулстэктрейс в атаче. Корневое и самое любопытное исключение аттачorg.postgresql.util.PSQLException: ERROR: relation "donations" does not exist А точно ленивые свойства грузятся без @Async? Либо таки дело не в Async, либо новый поток вообще не в ту базу законектился, что очень странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 16:48 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Ну так я вам об этом и говорю. Там ощущение, что коннекта нет вообще. Без асинка всё работает прекрасно. С асинком и без анноташки транзакшнл - тоже всё работает. с аннотацией транзакшнл и без асинка тоже работает. с асинком + транзакшнл (либо над асинком либо в методе, вызывающемся из асинка) -- нет. выходит то, что вы видите. Если я без асинка запускаю через обычный екзекутор (не спринг бин, а просто екзекутор, с методом, возвращающим футуру) - то с транзакшнл работает, но при обращении к лейзи связи - падает. говорит ноу сейшн. Если я в этом методе без асинка ручками через ентити менеджер создаю сессию, далее дергаю сущность простым склом не закрывая сессию - все лейзи связи доступны (сущность типа как приаттаченая выходит). всё работает. а теперь... если я в блоке конфигурации создаю ЯВНО езекутор, вернее, бин екзекутора, возвращающий тредпултаскекзекутор - то вуаля, всё замечательно пашет. даже асинку говорить не надо какой бин цеплять для асинхронного исполнения. Причем, пашет в любой комбинации, в т.ч. с асинк+транзакшнл. в рамках метода, который я обозначил этими анноташками. Т.е. проблема, как бы, решена. зы. спасибо в любом случае за помощь Вам. Я не претендую на глубокое знание всех процессов, проходящих где то там в дебрях. Только сверху. Полагаю, знать это в деталях конечно же надо, но через ентитименеджер фигачить сессии, скл запросы (на уровне сервиса) и т.п. - это уж слижком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 17:50 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
по моему вопросу.. я так полагаю, что у других он не возникал потому что у меня банально какие то особенности с конфигом непосредственно моего приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 17:56 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrа теперь... если я в блоке конфигурации создаю ЯВНО езекутор, вернее, бин екзекутора, возвращающий тредпултаскекзекутор - то вуаля, всё замечательно пашет. даже асинку говорить не надо какой бин цеплять для асинхронного исполнения. Вот это совсем странно. Spring же там свой экзекутор использует, если его не указать явно. Какая между ними принципиальная разница? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 18:14 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
А что за поток такой ? аттач[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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 18:37 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123074]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 383ms |

| 0 / 0 |
