我正在关注这个example https://dzone.com/articles/calling-stored-procedures-from-spring-data-jpa使用 Spring Data JPA 调用存储过程。这个想法是创建一个实体并像这样定义命名存储过程。
@Entity
@Table(name = "TRFTABLE")
@NamedStoredProcedureQuery(
name = "processFmTrf",
procedureName = "FM_TRF_UTIL.process_fm_trf",
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "i_trf_list", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "i_source_system", type = String.class)
}
)
public class TrfTable implements Serializable{
}
对于具有原始类型的输入参数来说非常简单,例如字符串.类。但是,我的存储过程的输入之一是一个数组。我知道如何通过使用 CallableStatement 调用存储过程来处理数组,如下所示:
Connection con = getConnection();
OracleConnection oraCon = con.unwrap(OracleConnection.class);
// fileArray predefined.
Array array = oraCon.createARRAY("VARCHAR2_TAB_T", fileArray);
CallableStatement stmt = con.prepareCall("{call FILE_TRANSFER_AUDIT_UTIL.update_file_queue_id(?,?,?,?,?,?)}");
stmt.setArray(1, array);
看起来必须建立数据库连接才能将数组传递给存储过程。如何使用实体类的 NamedStoredProcedure 来完成此操作?