【发布时间】:2020-03-10 03:56:26
【问题描述】:
我有一对多关系的数据库表,现在我只想获取在CClass 表中包含至少一个匹配记录的记录。
这是我的 PojoClass,我在其中定义了两者之间的关系
public class PojoClass {
@Embedded
PClass pClass;
@Relation(
parentColumn = "cid",
entityColumn = "cid",
entity = CClass.class)
List<CClass> cClassList;
}
PClass.java
@Entity(tableName = "p_class")
public class PClass {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "cid")
private long cid;
@ColumnInfo(name = "rid")
private String rid;
}
CClass.java
@Entity(tableName = "c_class",
foreignKeys = @ForeignKey(entity = PClass.class,
parentColumns = "cid",
childColumns = "cid",
onDelete = ForeignKey.CASCADE))
public class CClass {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name="cid")
@NonNull
private long cid;
@ColumnInfo(name = "rid")
private long rid;
}
和道
@Dao
public abstract class ClassDao {
@Query("SELECT * FROM PClass")
public abstract Single<List<PojoClass>> getAll();
}
此代码运行良好,但我想忽略 CClass 中没有匹配原始数据的原始数据。现在ClassDao#getAll() 在没有数据时为PojoClass#List<CClass> cClassList 字段返回空列表,但我想完全忽略来自'ClassDao#getAll() 的记录
【问题讨论】:
-
你想得到一个
PojoClass,其中c_id(外键)与你提供的值相匹配吗? -
不,现在我得到了预期的代码结果。但我想忽略 CClass 中没有对应 PClass raw 匹配记录的记录。
-
我已经添加了更多有问题的解释,请阅读
-
哪些类具有一对多关系? 匹配记录是什么意思?我假设你想通过
ids 匹配,因此主键和外键? -
是的,感谢您抽出宝贵时间,但我想我没能让您完全理解我的问题,我会更新这个问题的更多细节。
标签: android database sqlite rx-java rx-java2