如何使用渡槽ORM使用“关联”和“唯一”?
在我的代码中,我希望userapp是唯一的?
如果我尝试放@Column(unique: true)
,则会收到如下错误:
***“ _Professional”上的关系“ userapp”不能同时具有“ Column”和“ 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;
}
答案 0 :(得分:1)
userapp
下方的外键列是否唯一,由反向关系属性确定。在这种情况下,倒数是Userapp.professionals
。
如果Userapp.professionals
的类型为Professional
,则将唯一约束添加到userapp
;这是“一对一”的关系。
如果Userapp.professionals
的类型为ManagedSet<Professional>
,则不应用唯一约束;这是“多对多”的关系。
我猜想是因为您使用的是复数形式(professionals
),所以您要声明ManagedSet<Professional>
。更改_Userapp
表定义中的声明,并确保您在_Professional
中的逆匹配:
class _Userapp {
...
Professional professional;
}
class _Professional {
...
@Relate(#professional)
Userapp userapp;
}