Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

365
Vistas
La creación de la tabla de unión TypeORM ManyToMany no funciona

Tengo dos mesas services y offers . una Oferta puede tener muchos servicios y un servicio puede tener muchas ofertas.

Mi entidad de servicio

 @Entity('Services') export class ServiceEntity extends BaseEntity { @PrimaryGeneratedColumn() serviceKey: number; .... @ManyToMany(() => OffersEntity, (offer) => offer.services) @JoinTable({ name: 'offersXservices', inverseJoinColumn: { name: 'offerKey', referencedColumnName: 'offerKey' }, joinColumn: { name: 'serviceKey', referencedColumnName: 'serviceKey', }, }) offers?: OffersEntity[]; }

Y la entidad Mis ofertas se define así:

 @Entity('Offers') export class OffersEntity extends BaseEntity { @PrimaryGeneratedColumn() offerKey: number; .... @ManyToMany(() => ServiceEntity, (service) => service.offers) @JoinTable({ name: 'offersXservices', inverseJoinColumn: { name: 'serviceKey', referencedColumnName: 'serviceKey' }, joinColumn: { name: 'offerKey', referencedColumnName: 'offerKey', }, }) services?: ServiceEntity[]; }

Recibo un error cuando intenté crear un registro de oferta con algunos servicios: la query failed: INSERT INTO "offersXservices"("offerKey", "serviceKey") VALUES (DEFAULT, DEFAULT), (DEFAULT, DEFAULT) error: error: null value in column "offerKey" violates not-null constraint .

No entiendo por qué está pasando esto? en la consulta generada anteriormente, DEFAULT debe reemplazarse con offerKey y serviceKey respectivamente. ¿alguien puede ayudarme en eso?

Aquí está el código que uso para insertar en el registro de oferta.

 const _offerEntity = await OffersEntity.create({ vendorKey: input.vendorKey, name: input.name, description: input.description, startAt: input.startAt, expiry: input.expiry, services: await ServiceEntity.find({ where: { serviceKey: In(input.services) } }) }); await queryRunner.manager.save(_offerEntity);

Cualquier ayuda sería apreciada :)

PD: la base de datos es postgresql

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No encontré una solución adecuada a esta pregunta. Terminé usando consultas sql sin formato con typeorm.

 for (const _service of input.services) { await queryRunner.manager.query(`INSERT INTO "offersXservices"("offerKey", "serviceKey") VALUES (${_offerEntity.offerKey}, ${_service})`); }

Espero que ayude a alguien.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda