我正在使用typeorm和nestjs来处理oracle数据库。
1.当我使用存储库的方式从Oracle数据库中获取一些数据时,我得到以下错误:错误:ORA-00942:表或视图不存在
public void run():Promise〈BRANCHE[]〉{ let brancheListe:return null;
try {
brancheListe = await this.brancheRepository.find();
} catch (error) {
console.log(error);
}
return brancheListe;
}
1.当我查看生成的select语句时,它有双引号,我认为这是oracle无法找到表或视图的情况。
查询:SELECT“Branche”.“ID”AS“Branche_ID”,“Branche”.“BRANCHE”AS“Branche_BRANCHE”,“Branche”.“BRACHE_NAVN”AS“Branche_BRACHE_NAVN”,“Branche”.“TS”AS“Branche_TS”FROM“branche”“Branche”WHEREbranche.id〈:1 --参数:[10]查询失败:SELECT“Branche”.“ID”AS“Branche_ID”,“Branche”.“BRANCHE”AS“Branche_BRANCHE”,“Branche”.“BRACHE_NAVN”AS“Branche_BRACHE_NAVN”,“Branche”.“TS”AS“Branche_TS”FROM“branche”“Branche”WHERE branche.id〈:1 -- PARAMETERS:[10]错误:错误:ORA-00942:表或视图不存在
1.如果我使用存储库的方式查询,那么它的工作正常
public void run():Promise〈BRANCHE[]〉{ let brancheListe:return null;
try {
brancheListe = await this.brancheRepository.query(
'SELECT * FROM BRANCHE',
);
} catch (error) {
console.log(error);
}
return brancheListe;
}
1.有谁知道我是如何强制TypeOrm不使用双引号的?有没有什么选项我错过了?
我只是想知道如何停止TypeORM为生成的SQL放置双quoutes“”
2条答案
按热度按时间mw3dktmi1#
允许TypeORM使用双引号。相反,请修复实体,以便查询中的双引号标识符具有正确的大小写(大写)。
如果您有:
您可以尝试:
或者,使用
Entity
装饰器指定表名:或:
yqhsw0fo2#
双引号告诉Oracle对象名称区分大小写,拼写完全相同,并且可以包含特殊字符。否则,Oracle将所有对象名称视为UPPER_CASE,并带有下划线、#和$,但不允许使用其他字符(如空格)。
所以,如果你使用
" "
,你必须提供正确的大小写。这可能是大写,所以把你的模式,列和表名转换为全大写,看看是否有效。最有可能的是你的表名..而不是from "Branch"
,让它说from "BRANCHE"