sql >> Databasteknik >  >> RDS >> Mysql

Självrefererande ManyToMany RelationstypORM

Du kan själv referera till dina relationer. Här är ett exempel på en enkel riktad graf (aka en nod kan ha en förälder och flera barn).

@Entity()
export class Service extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;
  
  @Column()
  @Index({ unique: true })
  title: string;

  @ManyToOne(type => Service, service => service.children)
  parent: Service;

  @OneToMany(type => Service, service => service.parent)
  children: Service[];
}

En viktig anmärkning att komma ihåg är att dessa relationer inte automatiskt laddas när ett objekt läses från DB med find* funktioner.

För att faktiskt ladda dem måste du använda frågebyggaren för tillfället och gå med dem. (Du kan gå med på flera nivåer.) Ett exempel:

let allServices = await this.repository.createQueryBuilder('category')
  .andWhere('category.price IS NULL')
  .innerJoinAndSelect('category.children', 'product')
  .leftJoinAndSelect('product.children', 'addon')
  .getMany();

Observera hur jag använde olika namn för att referera till dem (category , product och addon ).



  1. Varför fungerar inte koden i AJAX framgångsanrop?

  2. Undantag för DBConcurrency uppstod vid uppdatering med dataadapter

  3. Hur skulle du implementera sekvenser i Microsoft SQL Server?

  4. c3p0 säger - java.lang.Undantag:ENDAST DEBUG:Försenad resursutcheckning stackspårning vid start av en vilotransaktion