![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| AliakseiKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
Здравствуйте, очень прошу помочь в решении возникшей проблемы. Проверяю эту связку (spring, sf jpa)на тестовой базе перед тем как лезть в рабочую. Убил целый день, но так ничего и не придумал.
Проблема в следующем: Есть класс DAO
при вызове метода write() вылетает exception java.lang.IllegalStateException: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead А вопрос в следующем: как можно закоммитить запись в базу? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
он говорит что открывать и закрывать транзакции на таком EntityManager нельзя. Используйте аннотации @Transactional для разметки транзакций: http://static.springsource.org/spring/docs...ive-annotations
|
|||
|
||||
| AliakseiKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
спасибо, почитаю. Попробую
|
|||
|
||||
| AliakseiKa |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
перенастроил, теперь ловлю другое исключение org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout) ( Уже устал.
конфиг спринга:
Может быть будут какие идеи? Очень расчитываю на помощь. |
||||
|
|||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Здравствуй. А может там еще какой-то Exception в логгах затусовался?
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| AliakseiKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
есть, но он из тоже разряда
javax.transaction.RollbackException: Transaction marked for rollback. |
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Ну, а глубже по StackTrace разве ничего нет?
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| AliakseiKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
неа, ничего нету (
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Выложи весь лог.
|
|||
|
||||
| AliakseiKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
Я уже под конец 2-го дня всё больше думаю о забитии на спринг и нормально использовать EJB. Да только обидно бросать не разобравшись. Это сообщение отредактировал(а) powerOn - 31.5.2010, 17:10 |
|||
|
||||
| eros2 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 31.5.2010 Репутация: нет Всего: нет |
Я использую EJB и при работе с JPA методы, подобные вашему у меня выглядят так:
flush() вызывается автоматически при завершении транзакции (выходе из метода) если не был вызван раньше. вызывая его вручную мы получаем вменяемый стектрейс если была ошибка. если flush() отсутствует, то при возникновении ошибки мы получаем невменяемый стектрейс (как у вас), потому что ошибка происходит за пределами кода пользователя. Скорее всего, у вас ошибка происходит из-за отсутствия merge(). См. доку, зачем она нужна. |
|||
|
||||
| ki6opr |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
а зачем перед persist вызывать merge ? цель метода какая ? если создать объект то perssit если синхронизировать состояние то merge. PS если попытаться воспользоваться этим методом для синхронизации энтити и контекста то будет EntityExistsException. Это сообщение отредактировал(а) ki6opr - 1.6.2010, 07:43 |
||||
|
|||||
| eros2 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 31.5.2010 Репутация: нет Всего: нет |
У меня entity приходят с клиента детачнутыми. merge() переводит entity из состояния DETACHED в состояние MANAGED или NEW. persist() не работает с детачнутыми сущностями. |
|||
|
||||
| AliakseiKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 5.3.2010 Репутация: нет Всего: нет |
ошибка возникает ещё до нажатия кнопки записать, а при инициализации контроллера, потому flush() ничего не дал (. Переписал код при использовании IoC J2EE6 и всё нормально заработало. Может 3-й спринг не очень хорошо дружит с 3-м glassfish?
|
|||
|
||||
| ki6opr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
нормально они дружат 2 eros2 теперь понял, спасибо |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |