Android 使用关系返回错误的房间

Android 使用关系返回错误的房间,android,android-room,Android,Android Room,我有3个实体,A,B,C 实体A与B和C相关 为了建立这种关系的模型,我做了以下工作: public class RelationA { @Embedded public A a; @Relation(parentColumn = "ID", entityColumn = "bID", entity=B.class) public B b; @Relation(parentColumn = "ID", entityColumn = "cID", entity=C.cl

我有3个实体,A,B,C

实体A与B和C相关

为了建立这种关系的模型,我做了以下工作:

public class RelationA {
   @Embedded public A a;

   @Relation(parentColumn = "ID", entityColumn = "bID", entity=B.class)
   public B b;

   @Relation(parentColumn = "ID", entityColumn = "cID", entity=C.class)
   public C c;
}
对于这种关系,我有一个
Dao

@Dao
public abstract class RelationADao extends BaseDao<RelationA> {
    // Add more methods for more custom operations
}
我得到了下面的错误,我不明白为什么

 error: Type of the parameter must be a class annotated with @Entity or a collection/array 
 of it.
     public abstract void insert( T entity);`
                               ^
如果您对
BaseDao
实现感兴趣,我将介绍它:

@Dao
public abstract class BaseDao<T> {
    @Update
    public abstract void update( T entity);

    @Delete
    public abstract void delete( T entity);

    @Insert
    public abstract void insert( T entity);
}
@Dao
公共抽象类BaseDao{
@更新
公开摘要无效更新(T实体);
@删除
公开摘要作废删除(T实体);
@插入
公开摘要无效插入(T实体);
}
我的理解是,我可以建立一个关系和相应的Dao,并通过该关系更新各个实体。 这可能是我出错的地方,如果是这样的话,我如何实现使用关系插入其他实体

任何帮助都将不胜感激,谢谢

我的理解是,我可以建立一种关系和一种对应关系 Dao并通过关系更新各个实体。可以是 这就是我错的地方如果是这样的话我该怎么做 使用关系插入其他实体

不,您的RelationA类只有一个有用的函数-它可以用于从查询中获取此类型的结果。不能使用它来插入/更新/删除值,就像在用@Entity注释的类中一样。相当于ROOM中类中的两个关系—是SQL查询中添加到表A的两个左联接(B,C表)的集合


SQLite中没有与之连接的对应表。因此,所有的改变都是在A、B、C类的Dao帮助下进行的。

非常感谢ya oychen blagadarni!
@Dao
public abstract class BaseDao<T> {
    @Update
    public abstract void update( T entity);

    @Delete
    public abstract void delete( T entity);

    @Insert
    public abstract void insert( T entity);
}