Пакетное обновление Hibernate java.sql.BatchUpdateException Ora-24813 cab= не отправлять или получать неподдерживаемый большой объект

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

ScrollableResults serviceScroll = session.createCriteria(SomeService.class).add(Restrictions.in("some values", arraylistofvalues)).scroll();

int count_cursor = 0;

while (serviceScroll.next()) {
                        SomeService serviceRecord = (SomeService) serviceScroll.get(0);

    //some updates here

     session.update(CenterServiceRecord);

                        someEntity test = new someEntity();

                        someEntity.setStatusDate(new Date());

                        session.save(someEntity);
                        session.flush();
                        if (++count_cursor % 10 == 0) {
                            session.flush();
                            session.clear();
                        }
    }



Caused by: java.sql.BatchUpdateException: ORA-24813: cannot send or receive an unsupported LOB

        at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
        at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10656)
        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)

Как решить эту проблему и почему это произошло?

1 ответ

Решение

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

%10 до%5

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

if (++count_cursor % 5 == 0) {
      session.flush();
      session.clear();
  }
Другие вопросы по тегам