从数据库 SQL oracle 保存和获取 blob 时出错

Lea*_*dro 5 java oracle spring hibernate

我试图将 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)
Run Code Online (Sandbox Code Playgroud)

我认为问题出在我尝试获取 CLOB 时,因为它仍在保存。如果 CLOB 很小,它可以正常工作,但是当 CLOB 稍大一点时,它就会失败。

抱歉我的英语不好,谢谢

编辑:

注释是:

@Lob
@Column(nullable = false)
private String body;
Run Code Online (Sandbox Code Playgroud)

保存方法

emailRepository.save(email); 
Run Code Online (Sandbox Code Playgroud)

小智 2

设置休眠属性

<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/>
Run Code Online (Sandbox Code Playgroud)

为我解决了问题。

将 SessionFactory 的 lobCreator 设置为 NonContextualLobCreator 可能是一个更好的解决方案(尚未尝试)。

但是我不确定是什么导致了这个错误。