Каково решение для BatchedTooManyRowsActedException? - PullRequest
0 голосов
/ 04 октября 2018

В настоящее время мы получаем следующее исключение при удалении записей из определенной таблицы.Я просмотрел множество блогов и форумов и узнал, что это происходит, потому что из БД мы удаляем 2 повторяющиеся записи, но в спящем режиме ожидаю удаления 1 записи.Пожалуйста, исправьте меня, если я ошибаюсь.

Мы думали, что эта проблема будет решена в Oracle 12c Release 2. Но даже после обновления Oracle мы все еще сталкиваемся с этой проблемой.

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

Исключение:

org.springframework.orm.hibernate3.HibernateSystemException: Batch update returned unexpected row count from update [0]; actual row count: 2; expected: 1; nested exception is org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 2; expected: 1
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:103)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
    at org.springframework.orm.jpa.JpaAccessor.translateIfNecessary(JpaAccessor.java:155)
    at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:192)
    at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:150)

Версия Oracle DB: Oracle 12c Release 2

Версия драйвера: 11.2

JJ-файл OJDBC: ojdbc6-11.2.0.3

Hibernate Версия: 4.1.7

Ссылка: Для затронутых строк Oracle JDBC batchUpdate всегда указано -2 (Statement.SUCCESS_NO_INFO)

Hibernate- Пакетное обновление вернуло неожиданное количество строк из-за обновления: 0 фактическое количество строк: 0 ожидается: 1

1 Ответ

0 голосов
/ 04 октября 2018

Я посетил эту ссылку, https://hibernate.atlassian.net/browse/HHH-9134, где кто-то решил ту же проблему при сохранении.

    Article article = new Article();
    article.setName("test");
    List<Section> articles = article.getSections(); //ArrayList
    Section section1 = new Section();
    section1.setName("test");
    section1.setContent("test");
    articles.add(section1);
    Section section2 = new Section();
    section2.setName("test");
    section2.setContent("test");
    articles.add(section2);
    Section section3 = new Section();
    section3.setName("test");
    section3.setContent("test");
    articles.add(section3);
    session.save(article);  //throw exception here

    Article article = articleManager.get(1L);
    article.setName("test");
    List<Section> articles = new ArrayList<Section>();
    Section section1 = new Section();
    section1.setName("test");
    section1.setContent("test");
    articles.add(section1);
    Section section2 = new Section();
    section2.setName("test");
    section2.setContent("test");
    articles.add(section2);
    Section section3 = new Section();
    section3.setName("test");
    section3.setContent("test");
    articles.add(section3);
    article.setSections(sections);
    session.save(article);  //throw exception here

    Article article = articleManager.get(1L);
    article.setName("test");
    List<Section> articles = article.getSections(); //PersistentList
    articles.clear();
    Section section1 = new Section();
    section1.setName("test");
    section1.setContent("test");
    articles.add(section1);
    Section section2 = new Section();
    section2.setName("test");
    section2.setContent("test");
    articles.add(section2);
    Section section3 = new Section();
    section3.setName("test");
    section3.setContent("test");
    articles.add(section3);
    session.save(article);  // it works fine 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...