【发布时间】:2022-01-13 16:32:06
【问题描述】:
我在我的 Android 应用程序 (Java) 中使用 Room,我有两个具有 1:many 关系的实体。
镜头实体 一个镜片可以多次佩戴。
@Entity(tableName = "lens_table")
public class Lens {
@PrimaryKey(autoGenerate = true)
private int lensId;
private String name;
}
穿戴实体 一次佩戴只能与一个镜头相关。
@Entity(tableName = "wear_table",
foreignKeys = {@ForeignKey(
entity = Lens.class,
parentColumns = "lensId",
childColumns = "fk_lensId",
onDelete = ForeignKey.CASCADE)},
indices = {@Index("fk_lensId")})
public class Wear {
@PrimaryKey(autoGenerate = true)
private int wearId;
private String name;
private int fk_lensId;
}
到目前为止一切顺利。到目前为止,我对“标准”查询(创建、获取所有、更新、删除......)很好,其中有很多文档。我还成功实施了查询,以根据以下关系获取所有镜片及其佩戴情况。
public class LensWithWears {
@Embedded
public Lens lens;
@Relation(
parentColumn = "lensId",
entityColumn = "fk_lensId"
)
public List<Wear> wears;
}
但现在我需要查询以下信息:
通过查找wearId 获得带有关联镜片的单次佩戴
我目前使用的关系类如下所示:
public class WearWithLens {
@Embedded
public Wear wear;
@Relation(
parentColumn = "wearId",
entityColumn = "lensId"
)
public Lens lens;
}
道查询看起来像这样:
@Query("SELECT * FROM wear_table WHERE wearId = :wearId LIMIT 1")
LiveData<WearWithLens> getWearWithLensByWearId(int wearId);
我的代码显然不起作用,否则我不会问... 问题是,返回了一个对象 WearWithLens,但其中的镜头对象始终为空。
换句话说,我想查询一个与镜头具有 1:1 关系的 Wear,并将两个对象放在 WearWithLens 类中。
有人可以告诉我查询应该是什么样子吗?
谢谢!
【问题讨论】:
标签: java android sqlite foreign-keys android-room