【发布时间】:2020-01-14 16:26:20
【问题描述】:
我的问题: 我正在努力消除 Room DAO 中以下 Room @Query 语句的编译错误。如您所见,SQLite 查询语句正在连接来自不同表的各个字段。错误标识的缺失字段是该方法的 List 类型中标识的 Notes 类构造函数的一部分。我想我需要更改标识的列表类型。如果我是对的,我需要一些关于如何解决它的指导/建议。我是否需要创建一个新的类和 DAO,只查询那些特定的字段?或者可能只是一个类,因为没有特定于这些字段的表。错误是:
错误:查询返回的列在 com.mistywillow.researchdb.database.entities.Notes 中没有字段 [commentID,questionID,quoteID,termID,topicID,deleted],即使它们被注释为非空或原始的。查询返回的列:[NoteID,SourceID,SourceType,Title,Summary] List getNotesOnTopic(String topic);
@Query("SELECT n.NoteID, s.SourceID, s.SourceType, s.Title, c.Summary FROM Comments as c " +
"LEFT JOIN Notes as n ON n.CommentID = c.CommentID " +
"LEFT JOIN Sources as s ON n.SourceID = s.SourceID " +
"LEFT JOIN Topics as t ON n.TopicID = t.TopicID WHERE t.Topic = :topic AND n.Deleted = 0")
List<Notes> getNotesOnTopic(String topic);
我正在尝试做的事情: 我正在尝试使用嵌入式 SQLite 数据库转换现有的 Java 桌面应用程序。上述查询在该应用程序中运行良好。我只想从这些表中传递字段数据。
我的尝试: 在过去的几天里,我进行了一些谷歌搜索并访问了一些论坛(例如 Android 论坛、Developer.Android.com),但大多数 Room @Query 示例都是单表全字段查询(例如“Select * From table”)。我还没有发现(可能有一些东西)完全解决了如果您只加入和查询跨表的特定字段的方法和操作。
【问题讨论】:
-
那些列至少与
Notes类不匹配。
标签: android android-sqlite android-room