在oracle中更新表时数据库锁定

时间:2014-07-25 14:35:31

标签: java database oracle hibernate

我的应用程序正在对表执行非常简单的更新:

UPDATE TABLE SET COLUMN = 'XYZ' WHERE PK = 123

问题是,当Hibernate尝试像这样更新表时,表会被锁定 ORA事件: SQL *从客户端获取更多数据

我试图在我的本地数据库上复制错误,但我不能。

有人知道发生了什么吗?

发生错误的数据库版本:Oracle数据库10g版本10.2.0.3.0 - 64位生产

我的本​​地数据库版本:Oracle数据库10g版本10.2.0.5.0 - 64位生产

PS:正在更新的列是CLOB类型,OJDBC驱动程序版本是1.4

2 个答案:

答案 0 :(得分:0)

你知道究竟是什么发送到oracle db吗?当Hibernate发送非常长的sql命令并且它在JDBC驱动程序上失败时,我已经看到了类似的东西。

我建议从获取最新的JDBC驱动程序版本开始。

答案 1 :(得分:0)

应使用准备好的语句。我们不应该直接分配值。 例如:

String updateSQL = UPDATE TABLE SET COLUMN = ? WHERE PK = ? . 
PreparedStatement pstmt = null;
pstmt=dbresourceAgent.getPreparedStatement(updateSQL);
pstmt.setString(1,"XYZ");
pstmt.setString(2,"123");
pstmt.executeUpdate();