oracle TypeOrm在生成Crud操作时加上双引号

5jvtdoz2  于 2023-04-05  发布在  Oracle
关注(0)|答案(2)|浏览(152)

我正在使用typeormnestjs来处理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“”

mw3dktmi

mw3dktmi1#

允许TypeORM使用双引号。相反,请修复实体,以便查询中的双引号标识符具有正确的大小写(大写)。
如果您有:

@Entity()
export class Branche {
    @PrimaryGeneratedColumn()
    ID: number

    @Column()
    BRANCHE: string

    @Column()
    BRACHE_NAVN: string

    @Column()
    TS: string
}

您可以尝试:

@Entity()
export class BRANCHE {
...

或者,使用Entity装饰器指定表名:

@Entity("BRANCHE")
export class Branche {
...

或:

@Entity({name: "BRANCHE"})
export class Branche {
...
yqhsw0fo

yqhsw0fo2#

双引号告诉Oracle对象名称区分大小写,拼写完全相同,并且可以包含特殊字符。否则,Oracle将所有对象名称视为UPPER_CASE,并带有下划线、#和$,但不允许使用其他字符(如空格)。
所以,如果你使用" ",你必须提供正确的大小写。这可能是大写,所以把你的模式,列和表名转换为全大写,看看是否有效。最有可能的是你的表名..而不是from "Branch",让它说from "BRANCHE"

相关问题