我有Dao和Query来加载所有Item by parentId
@Entity(
indices = @Index("parent_id"),
foreignKeys = @ForeignKey(entity = Parent.class, parentColumns = "id", childColumns = "parent_id")
)
public class Item extends BaseEntity {
@ColumnInfo(name = "parent_id")
private String parentId;
private String name;
...
}
@Dao
public interface ItemDao {
Item @Query("SELECT * FROM Item WHERE parent_id = :parentId")
LiveData<List<Item>> loadByParentId(String parentId);
}
这在parentId!= null时有效。使用parentId = null的查询返回0项。但我想加载parentId等于null的所有Item。
我找到了这个解决方案:
@Query("SELECT * FROM Item WHERE parent_id = :parentId OR (:parentId IS NULL AND parent_id IS NULL)")
LiveData<List<Item>> loadByParentId(String parentId);
可以有更好的解决方案吗?
答案 0 :(得分:0)
您可以尝试使用条件查询,例如:SELECT * FROM product WHERE parent_id = @ParentID OR ISNULL(@ParentID, '') = ''