CreateQueryBuilder不使用oracle返回数据,因为typeorm生成小写和引号形式的sql
我试图使用CreateQueryBuilder不使用oracle返回数据,因为typeorm生成小写和引号形式的sql,oracle,typescript,orm,typeorm,Oracle,Typescript,Orm,Typeorm,我试图使用createQueryBuilder对Oracle进行一个小查询,但它不返回记录 我注意到TypeORM生成的SQL是小写的,并带有引号(比如:选择“m”,“codigo”作为“m_codigo”,“m”,“descripion”作为“m_descripion”来自“moneda”“moneda”“m”),这就是在oracle中产生问题的原因,因为当我删除引号或。。。我将查询转换为大写,它返回数据 代码: 从“typeorm”导入{EntityRepository,getReposit
createQueryBuilder
对Oracle进行一个小查询,但它不返回记录
我注意到TypeORM生成的SQL是小写的,并带有引号(比如:选择“m”,“codigo”作为“m_codigo”,“m”,“descripion”作为“m_descripion”来自“moneda”“moneda”“m”
),这就是在oracle中产生问题的原因,因为当我删除引号或。。。我将查询转换为大写,它返回数据
代码:
从“typeorm”导入{EntityRepository,getRepository,Repository,Entity,Column,PrimaryColumn};
@实体()
出口级莫奈达{
@主列()
codigo?:编号;
@第()列
description?:字符串;
@第()列
simbolo?:字符串;
@第()列
十进制:数字;
}
@实体报告(Moneda)
导出类MonedArpository扩展存储库{
构造函数(){super()}
异步getListaMonedas(){
return wait getRepository(Moneda).createQueryBuilder()
.选择([“m.codigo”,“m.description”])
.来自(莫奈达,“m”)
.getMany();
}
}
//在另一个文件中。。。
从“/store”导入{MonedaRepository};
const monedaRepository=新monedaRepository();
const monedas=await monedaRepository.getListaMonedas();
console.log(monedas);
//结果:[]
这个解决方案是@Mukyuu给我的。
您必须在实体(“表”)中以大写字母表示实体的名称,并在querybuilder中而不是在getMany()中表示实体的名称。。。getRowMany()。。。(列的名称也必须大写):
const result=await getRepository(Currency).createQueryBuilder(“M”)
.选择([“M.CODIGO”,“M.description”])
.getRawMany();
这对我很有效。这个解决方案是@Mukyuu给我的。 您必须在实体(“表”)中以大写字母表示实体的名称,并在querybuilder中而不是在getMany()中表示实体的名称。。。getRowMany()。。。(列的名称也必须大写):
const result=await getRepository(Currency).createQueryBuilder(“M”)
.选择([“M.CODIGO”,“M.description”])
.getRawMany();
这对我很有用。默认情况下,Oracle标识符(表名、列名等)不区分大小写。您可以使用引号将它们区分大小写 使用不带任何别名的单引号包装列名,例如
const result = await getRepository(Currency)
.createQueryBuilder()
.select(['"CODIGO"', '"DESCRIPCION"'])
.getRawMany();
默认情况下,Oracle标识符(表名、列名等)不区分大小写。您可以使用引号将它们区分大小写 使用不带任何别名的单引号包装列名,例如
const result = await getRepository(Currency)
.createQueryBuilder()
.select(['"CODIGO"', '"DESCRIPCION"'])
.getRawMany();
真正地我使用的是
this.repository.createQueryBuilder(“别名”).select([“alias.ID”,“另一个_字段]).where(“alias.ID=:ID”,{ID:idparam}).getOne()
并生成以下查询:选择“alias”。“ID”作为“alias\u ID”,从“tablename”“alias”中选择另一个\u字段,其中“alias”。.ID=:idparam
。在甲骨文做得好吗?您没有在oracle中指明“from…”条款吗?是的。我没有,因为我在实体(@entity(“TABLE_NAME”)
中声明了它。并将该实体作为存储库导入,如@InjectRepository(Reponame)private readonly repoalis:repository
,但这不重要。谢谢,这是解决方案!!:-D另外,使其工作,而不是getMany()getRawMany()必须使用你可以把它作为答案。真的吗?我使用的是this.repository.createQueryBuilder(“别名”)。选择([“alias.ID”,“other_FIELD”])。其中(“alias.ID=:ID”,{ID:idparam})。getOne();
,它生成以下查询:选择“alias”。“ID”作为“alias_ID”,另一个来自“tablename”“alias”“WHERE”“alias”“.ID”=:idparam
。在oracle中做得很好?您是否在oracle中指明了“from…”子句?是的。我没有,因为我在实体(@entity(“TABLE_NAME”)
中声明了它。并将该实体作为存储库导入,如@InjectRepository(Reponame)private readonly Repoalias:Repository
但这不重要。谢谢,这是解决方案!!:-D此外,要使它工作,必须使用getMany()而不是getRawMany()。您可以将其作为答案。