会议室数据库INNER JOIN结果

时间:2019-02-05 17:07:39

标签: android inner-join android-room

我有两个表,一对一的关系

例如:

表格:

  • 用户[u_id,u_name,u_address]
  • 地址[add_id,add_country,add_town,add_street]

在我的Java代码中,这意味着两个实体和两个DAO

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

它将返回

LiveData<List<ItemUser>>

这样,我将得到u_address,它只是一个ID而不是ItemAddress对象,在这里我可以获取所需的数据。

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

1 个答案:

答案 0 :(得分:1)

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

您可以使用Relation Annotation

同一answer在堆栈溢出中。

在您的示例中将是这样。

课程

@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

@Dao
public interface UserAndAddressDao {

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