Android Room IN条件与实体列表

时间:2019-08-22 18:37:32

标签: java android android-room

假设我们有一个简单的User实体:

@Entity
public class User {
    @PrimaryKey
    public final String id;

    public final String name;
}

我要做的是找到intersection

  1. 本地存储在Android Room中的Users
  2. 刚刚从远程源获取的Users

这就是我可以做的:

//DAO
@Query("SELECT * FROM User WHERE id IN (:ids)"
List<User> getIntersection(List<String> ids)

并像这样使用Dao:

List<User> remoteUsers = getRemoteUsers();
List<String> ids = remoteUsers.stream().map(i -> i.id).collect(Collectors.toList())
List<User> intersaction = dao.getIntersection(ids);


我想知道的是,是否有一种方法可以直接将List作为参数传递:

//DAO
@Query("SELECT * FROM User WHERE ???"
List<User> getIntersection(List<User> users)
List<User> intersaction = dao.getIntersection(getRemoteUsers());

任何其他简化建议也将不胜感激。

0 个答案:

没有答案