You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeORM执行查询时是否支持Oracle特定参数(如fetchInfo)?

TypeORM对Oracle特定参数(如fetchInfo)的支持情况

TypeORM的标准QueryBuilder API不直接暴露Oracle驱动专属的fetchInfo这类参数选项——它的设计目标是保持跨数据库兼容性,不会在核心API中加入单一数据库的特有配置。不过你可以通过以下两种方式实现需求:

方案一:直接使用原生SQL查询

利用TypeORM的query方法,它会直接将参数传递给Oracle驱动的execute方法,完全支持所有Oracle驱动的选项:

const result = await _connection.query(
  'SELECT QUANTITY FROM mytable WHERE id = :id',
  [id],
  {
    fetchInfo: { "QUANTITY": { type: oracledb.STRING } }
  }
);

方案二:结合QueryBuilder与原生连接

如果想保留QueryBuilder生成SQL的便利,可以先获取底层Oracle连接实例,再执行自定义查询:

const repository = _connection.manager.getRepository(target);
// 获取底层Oracle连接
const oracleConn = await _connection.driver.connect();

try {
  // 用QueryBuilder生成目标SQL
  const sql = repository.createQueryBuilder('mytable')
    .select('QUANTITY')
    .where('mytable.id = :id', { id })
    .getSql();

  // 用原生Oracle连接执行查询并指定fetchInfo
  const result = await oracleConn.execute(
    sql,
    { id },
    { fetchInfo: { "QUANTITY": { type: oracledb.STRING } } }
  );

  // 手动将结果映射为TypeORM实体(可选)
  const entities = repository.create(result.rows);
} finally {
  // 务必关闭连接
  await oracleConn.close();
}

补充说明

如果需要频繁使用Oracle特定功能,直接使用oracledb原生驱动会更高效灵活——TypeORM的核心价值在于跨数据库的统一操作,单一数据库的专属特性通常需要绕过ORM层直接对接驱动。

内容的提问来源于stack exchange,提问作者diegodarossi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:15:02