简体   繁体   English

TypeORM - EntityColumnNotFound:未找到实体列“anträge”

[英]TypeORM - EntityColumnNotFound: No entity column "anträge" was found

I am trying to update an entity in my Angular frontend, in my case an user (Benutzer), but I get the error EntityColumnNotFound: No entity column "anträge" was found.我试图在我的 Angular 前端更新一个实体,在我的例子中是一个用户 (Benutzer),但我收到错误EntityColumnNotFound:没有找到实体列“anträge”。 in NestJS (TypeORM).在 NestJS(TypeORM)中。 The error comes, when I use the updateBenutzer Service/Controller.当我使用 updateBenutzer 服务/控制器时出现错误。 My code looks as follows:我的代码如下所示:

benutzer.entity.ts benutzer.entity.ts

@Entity()
export class Benutzer {
    @PrimaryGeneratedColumn({ type: "int" })
    BenutzerID: number;

    @Column({ type: "varchar", length: 50})
    Benutzername: string;

    @Column({ type: "varchar", length: 50})
    Passwort: string;

    @Column({ default: false})
    istAdmin: boolean;

    @Column({ default: false})
    istVorgesetzter: boolean;

    @Column({ type: "int"})
    Vorgesetzter: number;

    @Column({ type: "varchar", length: 50})
    Vorname: string;

    @Column({ type: "varchar", length: 50})
    Nachname: string;

    @Column()
    Geburtsdatum: Date;

    @Column({ type: "varchar", length: 50})
    Email: string;

    @Column()
    Eintrittsdatum: Date;

    @ManyToOne(() => Arbeitstage, arbeitstage => arbeitstage.allebenutzer)
    arbeitstage: Arbeitstage;

    @ManyToOne(() => Bundesland, bundesland => bundesland.alleBenutzer)
    bundesland: Bundesland;

    @OneToMany(() => Urlaubsantrag, urlaubsantrag => urlaubsantrag.benutzer)
    anträge: Urlaubsantrag[];
}

urlaubsantrag.entity.ts urlaubsantrag.entity.ts 文件

@Entity()
export class Urlaubsantrag {
    @PrimaryGeneratedColumn({ type: "int" })
    AntragID: number;

    @Column({ type: "varchar", length: 50 })
    Urlaubsart: string;

    @Column({ type: "varchar", length: 50})
    Status: string;
    @Column()
    von: Date;

    @Column()
    bis: Date;

    @Column({ type: "varchar", length: 50})
    Grund: string;

    @Column()
    informiert: boolean;

    @ManyToOne(() => Benutzer, benutzer => benutzer.anträge, { onDelete: 'CASCADE' })
    benutzer: Benutzer;
}

benutzer.service.ts benutzer.service.ts

@Injectable()
export class BenutzerService {
    constructor(
        @InjectRepository(Benutzer)
        private benutzerRepository: Repository<Benutzer>,
      ) {}
    
      getAllBenutzer(): Promise<Benutzer[]> {
        return this.benutzerRepository.find({ relations: ['bundesland', 'arbeitstage', 'anträge']});
      }
    
      findBenutzerByID(id: number): Promise<Benutzer> {
        return this.benutzerRepository.findOne(id, { relations: ['bundesland', 'arbeitstage', 'anträge']});
      }

      async findBenutzerByVorgesetzter(id: number): Promise<Benutzer[]> {
        return this.benutzerRepository.find({ where: {Vorgesetzter: id}});
      }

      getAllVorgesetzten(istVorgesetzter: boolean): Promise<Benutzer[]>{
        return this.benutzerRepository.find({ where: {istVorgesetzter: istVorgesetzter} });
      }

      async createBenutzer(benutzer: CreateBenutzer) {
        const nutzer = this.benutzerRepository.create(benutzer);
        await this.benutzerRepository.save(benutzer);
        return nutzer;
      }

      async updateBenutzer(id: number, createBenutzerDTO: CreateBenutzer) {
        return await this.benutzerRepository.update( id, createBenutzerDTO);
      }
    
      async deleteBenutzer(id: number): Promise<DeleteResult> {
        return await this.benutzerRepository.findOne(id).then((value) => {
          return this.benutzerRepository.delete(value);
        });
      }
}

benutzer.controller.ts benutzer.controller.ts

@Controller('benutzer')
export class BenutzerController {
    constructor(private readonly benutzerService: BenutzerService) {}

    @Post()
    async createBenutzer(@Body() createBenutzer: CreateBenutzer): Promise<Benutzer> {
    return this.benutzerService.createBenutzer(createBenutzer);
    }

    @Get()
    async getBenutzer(): Promise<Benutzer[]> {
        return this.benutzerService.getAllBenutzer();
    }

    @Get('/vorgesetzter')
    async getAllVorgesetzten(@Query('istVorgesetzter', new ParseBoolPipe()) istVorgesetzter: boolean): Promise<Benutzer[]>{
      return this.benutzerService.getAllVorgesetzten(istVorgesetzter);
    }

    @Get(':id')
    async getBenutzerByID(@Param('id', new ParseIntPipe()) id): Promise<Benutzer> {
        return this.benutzerService.findBenutzerByID(id);
    }

    @Get('/vorgesetzter/:id')
    async getBenutzerByVorgesetzter(@Param('id', new ParseIntPipe()) id): Promise<Benutzer[]> {
        return this.benutzerService.findBenutzerByVorgesetzter(id);
    }

    @Put(':id')
    updateBenutzer(@Param('id') id: number, @Body() createBenutzerDTO: CreateBenutzer) {
    return this.benutzerService.updateBenutzer(id, createBenutzerDTO);
    } 

    @Delete(':id')
    async remove(@Param('id', new ParseIntPipe()) id) {
    return this.benutzerService.deleteBenutzer(id);
  }
}

create-benutzer.dto.ts创建-benutzer.dto.ts

    export class CreateBenutzer {
    @IsString()
    @MinLength(4)
    @MaxLength(20)
    readonly Benutzername: string;

    @IsString()
    @MinLength(4)
    @MaxLength(20)
    //@Matches(/((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/, 
    //{message: 'das Passwort ist zu schwach'})
    readonly Passwort: string;
    readonly istAdmin: boolean;
    readonly istVorgesetzter: boolean;
    readonly Vorgesetzter: number;
    readonly Vorname: string;
    readonly Nachname: string;
    readonly Geburtsdatum: Date;
    readonly Email: string;
    readonly Eintrittsdatum: Date;
    readonly arbeitstage: Arbeitstage;
    readonly bundesland: Bundesland;
}

To solve your problem you can use the Save method for updating the entity:要解决您的问题,您可以使用 Save 方法更新实体:
the reason is the save method executes a primitive operation without cascades and relations operations.原因是 save 方法执行的是原始操作,没有级联和关系操作。

 async updateBenutzer(id: number, createBenutzerDTO: CreateBenutzer) {

 let benutzerUpdate= await this.benutzerRepository.findOne({ BenutzerID:id});
 if(!benutzerUpdate) throw new NotFoundException({message:"Benutzer doesn't exist" });

    return this.benutzerRepository.save({...benutzerUpdate,...createBenutzerDTO});

  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 EntityColumnNotFound:未找到实体列“joinDate” - EntityColumnNotFound: No entity column "joinDate" was found 无法在角度2中使用typeorm,未找到模块mysql - Failed to use typeorm in angular 2, module mysql not found Jasmine 测试 TypeORM - 错误:DriverPackageNotInstalledError:未找到安装的 SQLite 包 - Jasmine Testing TypeORM - Error: DriverPackageNotInstalledError: SQLite package has not been found installed 为什么找不到 Entity Framework Core 2.2 FirstOrDefaultAsync 方法? - Why Entity Framework Core 2.2 FirstOrDefaultAsync method not found? 如果未找到数据,ag-grid 将隐藏列标题下方的所有内容 - ag-grid hiding everything below column headers if no data found 解析 &#39;...ge-2.2.1.tgz&quot;},&quot;engin&#39; 附近时出现错误 JSON 输入的意外结束 - Error Unexpected end of JSON input while parsing near '...ge-2.2.1.tgz"},"engin' 带有 fs、缓冲区和流的 TypeORM 错误 - TypeORM errors with fs, buffer and stream Azure Static Web 应用程序 ZDB974238714CA8DE634A7CE1D08 中的 TypeORM 迁移 - TypeORM migrations in Azure Static Web Apps API NestJS,Typeorm-像这样不返回任何记录 - NestJS, Typeorm - where like doesn't return any records 我如何与 nestjs-typeorm-paginate 建立关系 - How can i get relation with nestjs-typeorm-paginate
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM