Это более универсальная проблема.
Основное различие заключается в семантике. Вы должны решить, каковы отношения (Какой-то глупый пример):
У человека только одна правая рука. Правая рука принадлежит одному человеку.
Сказать обратное выглядит немного странно:
Правая рука имеет мужчину. Мужчина принадлежит правой руке.
Вы можете иметь человека без правой руки. Но одна правая рука бесполезна.
В дальнейшем, если RightArm и Men являются моделями, это может выглядеть следующим образом:
Man.hasOne(RightArm);
RightArm.belongsTo(Man);
И, как вы заметили, есть также разница в структуре таблицы БД:
BelongsTo будет добавить foreignKey к источнику, куда hasOne добавит к цели (Sequelize создает новый столбец «ManId» в таблице «RightArm», но не создает столбец «RightArmId» в таблице «Man»).
Я не вижу больше различий.
Обычно я находил ответ через 5 минут после публикации. Оказывается, журнал файлов из p4v показывает больше информации, чем окно журнала. Включите ведение журнала, и файл журнала покажет вам, в чем проблема.