问题描述
在我的 Android 应用中,我使用 Room 来存储数据。我目前面临的问题是,我需要在嵌入对象的 @Relation 中放置 2 列,因为该关系取决于 2 列。见下结构:
@Entity(tableName = "damages")
public class Damage {
@PrimaryKey(autoGenerate = true)
@NonNull
private Long id;
@NonNull
private Long projectId;
@NonNull
private Long codeId;
private String description;
...
}
@Entity(tableName = "damage_codes")
public class DamageCode {
@PrimaryKey(autoGenerate = true)
@NonNull
private Long id;
@NonNull
private Long projectId;
@NonNull
private String name;
private String description;
@NonNull
private String code;
@NonNull
private String damageType;
...
}
@Entity(tableName = "damage_types")
public class DamageType {
@PrimaryKey(autoGenerate = true)
@NonNull
private Long id;
@NonNull
private Long projectId;
@NonNull
private String ttype;
private String description;
...
}
public class DamageWithCode {
@Embedded public Damage damage;
@Relation(
entity = DamageCode.class,parentColumn = "codeId",entityColumn = "id"
)
public DamageCodeAndType code;
public Damage getDamage() {
return damage;
}
public DamageCodeAndType getCode() {
return code;
}
}
public class DamageCodeAndType {
@Embedded public DamageCode code;
@Relation(
parentColumn = "damageType",entityColumn = "ttype"
)
public DamageType damageType;
public DamageCode getCode() {
return code;
}
public DamageType getDamageType() {
return damageType;
}
}
在我的 DamageDAO 中,我有以下方法:
@Transaction
@Query("SELECT * FROM damages WHERE projectId=:projectId")
public List<DamageWithCode> getDamages(Long projectId);
@Query("SELECT * FROM damages WHERE id=:id")
public DamageWithCode getDamage(Long id);
问题:在@Relation 中的DamageCodeAndType 类中,我不仅需要将damageType 指定为parentColumn,还需要指定projectId。此外,在 entityColumn 中,我需要将 projectId 添加到 ttype 列。我怎样才能做到这一点?这样的事情可能吗?
public class DamageCodeAndType {
@Embedded public DamageCode code;
@Relation(
parentColumn = {"damageType","projectId"},entityColumn = {"ttype","projectId"}
)
public DamageType damageType;
public DamageCode getCode() {
return code;
}
public DamageType getDamageType() {
return damageType;
}
}
如果这是不可能的,任何人都可以指出我如何解决这个问题的方向。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)