为什么在 objectbox-dart 中不允许带有反向链接的多对一?

Why many to one with backlink not allowed in objectbox-dart?

我有这样的结构:

@JsonSerializable()
class Media {
  @Id(assignable: true)
  int id = 0;
  int lid = 0;
  String url = '';
  String? title;
}

@Entity()
class NewsPicture extends Media {
  @override
  @Id(assignable: true)
  int id = 0;

  @Backlink('newsPicture')
  final news = ToOne<News>();
}

@JsonSerializable(explicitToJson: true)
@Entity()
class News extends Data<News> implements DataInterface<News> {
  @Id(assignable: true)
  @JsonKey(defaultValue: 0)
  int lid = 0;
  final Picture = ToMany<NewsPicture>();
}

在生成过程中,objectbox_generator:resolver 给我这个错误信息:

invalid use of @Backlink() annotation - may only be used on a ToMany<> field

为什么不允许?我错过了什么?

在那个方向上不支持,因为它不是真正需要的(对任何事情都没有帮助),你可以只翻转 direction/change 存储关系的地方。此外,ToOne 关系的存储效率更高,因为它们只是数据库中的单个字段,而独立的 ToMany 关系需要中间“映射 table”。

如果您像这样更新您的模型,它将正常工作,并且您在应用程序中使用它的方式不会有任何不同:

@Entity()
class NewsPicture extends Media {
  @override
  @Id(assignable: true)
  int id = 0;

  final news = ToOne<News>();
}

@JsonSerializable(explicitToJson: true)
@Entity()
class News extends Data<News> implements DataInterface<News> {
  @Id(assignable: true)
  @JsonKey(defaultValue: 0)
  int lid = 0;

  @Backlink()
  final Picture = ToMany<NewsPicture>();
}