проверьте это. я просто тестирую транзакцию, допустив ошибку, я допустил ошибку в строке em.persist(enro);. и это должен быть переход в блок исключений, верно? вместо этого он выполняет фиксацию и завершает транзакцию. и тогда он не переходит на следующую строку i=1; он попал в исключение и выполнялся до отката. Когда дошли до строки оператора отката, возникла ошибка: «В настоящее время ни одна транзакция не активна». почему? значит откат бесполезен?
public int addclassOrEnrollment(Enrollment enro, Boolean createClass) {
int i=0;
EntityManager em=null;
try {em=ConnectionClass.getManager();
em.getTransaction().begin(); // transaction was started successfully
if(createClass==true) {
enro.getClassroom().setCreaterId(enro.getUser());;
em.persist(enro.getClassroom());
}
em.persist(enro.getUser());
System.out.println("error test 1");
em.persist(enro); // here will occur error beause of trying to add FK without parent record in other table
System.out.println("here is 2");
em.getTransaction().commit();// at this line jumped to Exception block
i=1; // this line didn't excute
} catch (Exception e) {
System.out.println("error :"+e.getMessage());// this line excuted
System.out.println("next error");// this line excuted
em.getTransaction().rollback(); // here i got error message saying "No transaction is currently active"
// TODO: handle exception
}finally {
if(em.isOpen()) {
em.close();
}
}
return i;
}
помогите и объясните мне. если я использую это, em.getTransaction().rollback() бесполезен, потому что он не был зафиксирован, а активная транзакция была обработана как ложная, хотя перед фиксацией было получено исключение;
} catch (Exception e) {
if (em != null && em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
System.out.println("error :"+e.getMessage());
// TODO: handle exception
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ion-issued
Транзакция JPA выдана ⇐ JAVA
Программисты JAVA общаются здесь
1730448144
Anonymous
проверьте это. я просто тестирую транзакцию, допустив ошибку, я допустил ошибку в строке em.persist(enro);. и это должен быть переход в блок исключений, верно? вместо этого он выполняет фиксацию и завершает транзакцию. и тогда он не переходит на следующую строку i=1; он попал в исключение и выполнялся до отката. Когда дошли до строки оператора отката, возникла ошибка: «В настоящее время ни одна транзакция не активна». почему? значит откат бесполезен?
public int addclassOrEnrollment(Enrollment enro, Boolean createClass) {
int i=0;
EntityManager em=null;
try {em=ConnectionClass.getManager();
em.getTransaction().begin(); // transaction was started successfully
if(createClass==true) {
enro.getClassroom().setCreaterId(enro.getUser());;
em.persist(enro.getClassroom());
}
em.persist(enro.getUser());
System.out.println("error test 1");
em.persist(enro); // here will occur error beause of trying to add FK without parent record in other table
System.out.println("here is 2");
em.getTransaction().commit();// at this line jumped to Exception block
i=1; // this line didn't excute
} catch (Exception e) {
System.out.println("error :"+e.getMessage());// this line excuted
System.out.println("next error");// this line excuted
em.getTransaction().rollback(); // here i got error message saying "No transaction is currently active"
// TODO: handle exception
}finally {
if(em.isOpen()) {
em.close();
}
}
return i;
}
помогите и объясните мне. если я использую это, em.getTransaction().rollback() бесполезен, потому что он не был зафиксирован, а активная транзакция была обработана как ложная, хотя перед фиксацией было получено исключение;
} catch (Exception e) {
if (em != null && em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
System.out.println("error :"+e.getMessage());
// TODO: handle exception
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79146961/jpa-transaction-issued[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия