android - 将具有较少字段的新 POJO 类映射到现有 Room 表
问题描述
目前,我们有以下 Dao 和模型类。
笔记道
@Query("SELECT * FROM note")
public abstract LiveData<List<Note>> getAllNotes();
笔记类
@Entity(
tableName = "note"
)
public class Note {
@ColumnInfo(name = "title")
private String title;
// Can contain a huge String.
@ColumnInfo(name = "body")
private String body;
}
但是,在某些情况下,我们只对加载感兴趣title
。
一次加载所有Note
带有大body
字符串的 s,可能会导致OutOfMemoryException
有什么办法,我们可以创建另一个 POJO 如下?
public class SimpleNote {
private String title;
}
然后,我们可以返回SimpleNote
from的列表NoteDao
?
@Query("???")
public abstract LiveData<List<SimpleNote>> getAllSimpleNotes();
解决方案
这将为您工作:
@Query("SELECT title FROM note")
LiveData<List<String>> getAllNoteTitles();
当您调用SELECT *
时,它将选择表内的所有字段。
推荐阅读
- python - 查看JSON数据是否在文件中,如果没有,检查下一个文件
- javascript - Chrome 中的 Window.open() 无法在新标签页中打开 PDF
- r - 如何使用 map 和 ggplot 为每个图表添加自定义标题?
- git - 如何从 git 中删除本地目录?
- javascript - Firefox 中的滚动行为导致 scrollIntoView() 在 Firefox 中停止
- python - python 3,同时运行不同循环的最佳方法是什么?
- reactjs - 如何使用 redux 通过调度传递我的对象数组
- python - 在谷歌存储桶上使用 os.stats
- python - Matplotlib:在图例中移动标记位置
- android - 从 logcat 录制视频后,Android Studio 变得无响应