Android Room belongsTo一对一关联@Relation注解用法正确性咨询
结论
你的@Relation注解使用完全正确,完全匹配你的需求场景。
和Laravel Eloquent的关联逻辑对应
你写的这段Room关联逻辑,刚好对应你熟悉的Eloquent belongsTo 关联,参数对应关系如下:
parentColumn = "main_reference_id"对应EloquentbelongsTo方法的第二个参数:当前表存储的外键字段entityColumn = "id"对应EloquentbelongsTo方法的第三个参数:关联表的主键字段
等同于你在Laravel的Article模型中写的代码:
public function mainReference() { return $this->belongsTo(Reference::class, 'main_reference_id', 'id'); } public function otherReference() { return $this->belongsTo(Reference::class, 'secondary_reference_id', 'id'); }
Room会自动帮你完成类似Eloquentwith('mainReference', 'otherReference')的预加载逻辑,不需要手动写JOIN语句。
小问题提示
你提供的POJO代码里有一处大概率的笔误:val article: article里的类型article是小写,应该要和你定义的实体类名Article保持大写一致,否则会编译报错。
如果你的main_reference_id、secondary_reference_id字段允许为NULL,需要把对应的关联字段声明为可空类型:val main_reference: Reference?、val other_reference: Reference?,否则遇到空外键会抛出查询异常。
内容的提问来源于stack exchange,提问作者Riajul
相关产品推荐
相关产品推荐

