【问题标题】:How do I perform a Room DAO multi table join @Query using select fields?如何使用选择字段执行 Room DAO 多表连接 @Query?
【发布时间】: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


【解决方案1】:

我想我可能已经解决了我的问题。我刚刚创建了一个名为 SourceTable 的新类,并在构造函数中指定了查询的字段。唯一的问题是我,根据后续错误,参数必须与字段名称匹配。

public class SourcesTable {
    private int NoteID;
    private int SourceID;
    private String SourceType;
    private String Title;
    private String Summary;

    public SourcesTable(int NoteID, int SourceID, String SourceType, String Title, String Summary){
        this.NoteID = NoteID;
        this.SourceID = SourceID;
        this.SourceType = SourceType;
        this.Title = Title;
        this.Summary = Summary;
    }
}

然后我更新我的列表方法:

List<SourcesTable> getNotesOnTopic(String topic);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多