Ошибка сохранения и получения BLOB-объектов из базы данных SQL Oracle

1

Я пытаюсь сохранить CLOB в базу данных и восстановить его, но я получаю SQLException:

Caused by: java.sql.SQLException: Lob read/write functions called while another read/write is in progress: getBytes()
 at oracle.jdbc.driver.T4CConnection.getBytes(T4CConnection.java:2427)
 at oracle.sql.BLOB.getBytes(BLOB.java:348)
 at oracle.jdbc.driver.OracleBlobInputStream.needBytes(OracleBlobInputStream.java:181)

Я понял, что проблема в том, что я пытался получить CLOB, потому что он все еще сохраняет. Если CLOB мал, он работает нормально, но когда CLOB немного больше, он терпит неудачу.

Извините за мой английский и спасибо

РЕДАКТИРОВАТЬ:

Аннотация:

@Lob
@Column(nullable = false)
private String body;

Метод сохранения

emailRepository.save(email); 
  • 1
    И почему это имеет какое-либо отношение к Spring или Hibernate?
  • 0
    пожалуйста выложите код где это исключение выдается?
Показать ещё 2 комментария
Теги:
spring
hibernate

2 ответа

1
Лучший ответ

Установка свойства спящего режима

<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>

сорвал проблему для меня.

Настройка lobCreator для SessionFactory для NonContextualLobCreator, вероятно, является лучшим решением (еще не проверено).

Однако я не уверен, что вызывает эту ошибку.

0

Я столкнулся с аналогичной проблемой в одном из проектов, установив

updatable = false

исправил проблему для меня.

Пример:

@Lob
@Column(name = "CONTENT", updatable = false)
Blob content;

Hibernate каким-то образом пытается повторно сохранить контент, даже если он не был изменен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню