首页 > 解决方案 > 如何使用需要在 Oracle 数据库中调用存储过程的实体管理器创建 Clob?

问题描述

我正在尝试调用一个 Oracle 存储过程,它有一个 Clob 作为输入参数。我正在使用 EntityManager 进行数据库连接。我不知道如何初始化 Clob 变量(看下面的代码)。

这是我们的代码:

@PersistenceContext(unitName = "oracledb")
private EntityManager entityManager;

....

StoredProcedureQuery query =
    entityManager.createStoredProcedureQuery("procedure1");
query.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN);
query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(3, Clob.class, ParameterMode.IN);

query.setParameter(1, data1);
query.setParameter(2, data2);

Clob clob //<---how to initialize this CLOB???
clob.setString(1, data3);
query.setParameter(3, clob);

query.execute();

如何初始化 Clob 或如何从 EntityManager 获取连接以便可以调用

connection.createClob()

标签: javaoracleentitymanager

解决方案


如果您使用的是 hibernate,您可以轻松地创建一个 Clob:

String data3 = "whatever";
Clob clob = org.hibernate.engine.jdbc.NonContextualLobCreator.INSTANCE.createClob( data3 );

推荐阅读