首页 > 解决方案 > 房间数据库 INNER JOIN 结果

问题描述

我有两张表具有一对一的关系

例如 :

表:

这意味着我的 java 代码中有两个实体和两个 DAO

当我想执行这个查询时:select * from users inner join address on u_address = add_id

它会回来

LiveData<List<ItemUser>>

像这样我会得到 u_address ,它只是一个 ID 而不是 ItemAddress 对象,我可以在其中获取我想要的数据。

我知道我可以执行另一种方法来获取所选地址的数据,但我想知道是否可以通过仅调用一个方法来获取整个数据?

标签: androidinner-joinandroid-room

解决方案


据我了解,您想要这两个实体之间关系的结果。

您可以使用关系注释

堆栈溢出中的相同答案

在你的例子中会是这样的。

班级

@Entity
public class Users {
 @PrimaryKey public final int u_id;
             public final String u_name;
             public final int u_address;
}

@Entity
public class Address {
@PrimaryKey public final int add_id;
            public final String add_country;
            public final String add_town;
            public final String add_street;
}

public class UserAndAddress{
@Embedded public Users user;

@Relation(parentColumn = "u_id",
          entityColumn = "add_id") public List<Address> addressList;
}

@Dao
public interface UserAndAddressDao {

@Query("SELECT * from users")
public List<UserAndAddress> getUsersAndAddress();
}

推荐阅读