Nano Hash - криптовалюты, майнинг, программирование

typeorm индивидуальный объект не найден в getManager.find

У меня есть эта типорма:

@Entity({ name: 'trans' })
export class Transaction {
  @PrimaryGeneratedColumn({ type: 'int', name: 'trans_id' })
  id: number;

  @OneToOne(type => Credit, credit => credit.transaction, { cascade: true })
  credit: Credit
}

Со следующим соотношением:

@Entity({ name: 'trans_credit' })
export class Credit {
  @PrimaryColumn({ type: 'int', name: 'trans_id' })
  id: number;
  
  @OneToOne(type => Transaction, transaction => transaction.credit)
  @JoinColumn({ name: 'trans_id' })
  transaction: Transaction;
}

В таблице trans_credit нет FK. Соответствующие таблицы:

CREATE TABLE `trans` (`trans_id` int(10) unsigned NOT NULL AUTO_INCREMENT) AUTO_INCREMENT=1
CREATE TABLE `trans_credit` (`trans_id` int(10) unsigned NOT NULL)

Все представленные здесь сущности и объявления таблиц, конечно, упрощены.

Когда я пытаюсь запросить:

const fromEntity = getRepository(Transaction).find({
            where: [
                { status: 'pending', credit: { j5: 1 } }
            ]
        });

Я получаю это:

Error: Relation with property path trans_id in entity was not found

Почему, почему это происходит?

30.07.2020

Ответы:


1

Вы указали свое id имя столбца Credit как trans_id. И вы также определили имя JoinColumn как trans_id.

Я думаю, что trans_id должно быть credit_id в вашем случае:

@Entity({ name: 'trans_credit' })
export class Credit {
  @PrimaryColumn({ type: 'int', name: 'credit_id' }) // <- updated the column name
  id: number;
  
  @OneToOne(type => Transaction, transaction => transaction.credit)
  @JoinColumn({ name: 'trans_id' })
  transaction: Transaction;
}
01.08.2020
  • Я понимаю, почему вы так думаете, но в этом случае Credit имеет trans_id в качестве идентификатора и PK, а не credit_id. 01.08.2020
  • PS: Я также попытался определить отношение «транзакция» как PrimaryColumn и JoinColumn поверх OneToOne (отказавшись от поля «id»), но это тоже не помогло. 01.08.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..