要解决Android Room嵌入式关联忽略了SQL的where条件的问题,可以按照以下步骤进行操作:
@Transaction
@Query("SELECT * FROM User WHERE userId = :userId")
public LiveData getUserWithOrders(int userId);
在此示例中,我们使用了WHERE子句来限制查询结果仅返回具有指定userId的用户。
public class UserWithOrders {
@Embedded
public User user;
@Relation(parentColumn = "userId", entityColumn = "userId")
public List orders;
}
在此示例中,我们将Order实体类嵌入到User实体类中,并使用@Relation注解指定了User实体类的userId与Order实体类的userId之间的关联。
int userId = 1; // 假设要查询userId为1的用户的所有订单
userViewModel.getUserWithOrders(userId).observe(this, userWithOrders -> {
// 处理查询结果
});
在此示例中,我们传递了userId为1的参数来获取该用户的所有订单。
通过以上步骤,您应该能够解决Android Room嵌入式关联忽略了SQL的where条件的问题,并正确地使用WHERE子句来限制嵌入式关联的查询结果。
上一篇:Android Room嵌入关系忽略了WHERE条件。
下一篇:Android Room迁移 - java.lang.IllegalArgumentException: 参数被指定为非空,但为null