我很好奇我做错了什么。我有用OneToMany关系定义的实体。他们是:
Category
CategoryItem
其中Category为顶层,CategoryItem之间为OneToMany关系。
创建新记录时,我会这样做:
const newCategory: Category = new Category();
newCategory.name = 'Bob'
newCategory.items = [];
const newItem: CategoryItem = new CategoryItem();
newItem.someField = 'whatever';
newCategory.items.push(newItem);
现在,当我去保存这些项目时,只要我这样做:
(注意:以下代码中的实体是getManager()调用结果)
await entities.save(category)
然后保存类别,但不保存categoryItems。 (不是吗?)
如果我愿意
await entities.save(category);
for(const item of category.items) {
await entities.save(item);
}
然后我收到一条错误消息,提示无法将null插入CategoryItem记录的categoryId字段中。为了正确保存,我发现我必须这样做:
await entities.save(category);
for(const item of category.items) {
item.categoryId = category.categoryId;
await entities.save(item);
}
只有这样才能保存。
这不是我期望的。我希望子项将被保存,并自动匹配其外键字段。
我对这个期望错了吗?如果没有,对我可能做错的事情有什么想法?