надо проверить что правильно определены primarycolumn на энтити первым делом. и плюс в релейшенах там тоже указывается «обратный релейшен» – typeorm использует эти данные чтобы правильно определять куда что писать чтобы связать записи…
посмотри в репозитории typeorm в папке sample/sample2-one-to-one – по-моему это как раз твой кейс – OneToOne с каскадной вставкой detail-записи при добавлении базовой…
это не документировано, но по-моему на колонке можно описать onUpdate – и тогда он при вставке будет делать ON DUPLICATE KEY UPDATE. по крайней мере так оно выглядит по коду… но надо проверять…