使用@Relate 和 unique

Use @Relate and unique

如何使用 aqueduct ORM 使用 Relate 和 unique?

在我的代码中,我希望 userapp 是唯一的? 如果我尝试输入 @Column(unique: true),我会收到这样的错误:

*** Relationship 'userapp' on '_Professional' cannot both have 'Column' and 'Relate' metadata. To add flags for indexing or nullability to a relationship, see the constructor for 'Relate'.

我的代码如下:

class Professional extends ManagedObject<_Professional> implements _Professional {}

class _Professional {

  @primaryKey
  int id;
  @Relate(#professionals)
  Userapp userapp;
  @Column(defaultValue: 'true')
  bool active;  

  ManagedSet<ProfessionalSpecialty> professionalSpecialties;

}

userapp 下的外键列是否唯一由反向关系属性 决定。在这种情况下,倒数是 Userapp.professionals

如果Userapp.professionals的类型是Professional,则userapp加入唯一约束;这是 'has-one' 关系。

如果Userapp.professionalsManagedSet<Professional>类型,则不应用唯一约束;这是 'has-many' 关系。

我猜是因为您使用的是复数形式 (professionals),所以您声明的是 ManagedSet<Professional>。更改 _Userapp table 定义中的声明并确保你的反向匹配 _Professional:

class _Userapp {
  ...
  Professional professional;
}
class _Professional {
  ...
  @Relate(#professional)
  Userapp userapp;

}