使用@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.professionals
是ManagedSet<Professional>
类型,则不应用唯一约束;这是 'has-many' 关系。
我猜是因为您使用的是复数形式 (professionals
),所以您声明的是 ManagedSet<Professional>
。更改 _Userapp
table 定义中的声明并确保你的反向匹配 _Professional
:
class _Userapp {
...
Professional professional;
}
class _Professional {
...
@Relate(#professional)
Userapp userapp;
}
如何使用 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.professionals
是ManagedSet<Professional>
类型,则不应用唯一约束;这是 'has-many' 关系。
我猜是因为您使用的是复数形式 (professionals
),所以您声明的是 ManagedSet<Professional>
。更改 _Userapp
table 定义中的声明并确保你的反向匹配 _Professional
:
class _Userapp {
...
Professional professional;
}
class _Professional {
...
@Relate(#professional)
Userapp userapp;
}