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

TypeORM v0.3.10如何执行原生SQL?getManager已弃用

TypeORM v0.3.x 替代弃用的getManager()执行原生SQL的方法

在TypeORM v0.3+版本中,getManager()已被移除,你可以通过以下几种方式实现相同的原生SQL查询功能:

  • 通过DataSource实例获取EntityManager
    首先确保你已经初始化了DataSource,之后通过它的manager属性拿到EntityManager,再调用query方法:

    import { DataSource } from "typeorm";
    
    // 初始化数据源(项目启动时执行一次即可)
    const AppDataSource = new DataSource({
      type: "mysql", // 根据你的数据库类型调整
      host: "localhost",
      port: 3306,
      username: "root",
      password: "your_password",
      database: "your_db",
      entities: [/* 你的实体类 */],
    });
    await AppDataSource.initialize();
    
    // 执行原生SQL
    const users = await AppDataSource.manager.query("SELECT * FROM users");
    
  • 依赖注入环境中直接使用EntityManager
    如果是在NestJS这类依赖注入的框架里,可以直接注入EntityManager来使用:

    import { Injectable } from "@nestjs/common";
    import { EntityManager } from "typeorm";
    
    @Injectable()
    export class UserService {
      constructor(private readonly entityManager: EntityManager) {}
    
      async getUsers() {
        return await this.entityManager.query("SELECT * FROM users");
      }
    }
    
  • 通过Repository执行原生SQL
    你也可以针对特定实体的Repository调用query方法,效果完全一致:

    const userRepository = AppDataSource.getRepository(User);
    const users = await userRepository.query("SELECT * FROM users");
    

以上几种方式都能替代原来的getManager().query(),实现原生SQL查询的功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:10:27