房间数据库的多对多关系从一对表得到一个响应

时间:2018-05-28 13:51:50

标签: android mysql sqlite android-room

我有三个表NotesTags和连接表,其中NoteTag的外键名为NoteTagJoin,但我怎样才能返回所有标签都作为一个响应?

以下是获取注释和标签的查询:

SELECT n.*,t.* FROM notes n INNER JOIN note_tag_join nt ON n.entryId = nt.noteId INNER JOIN tags t ON t.tagId = nt.tagId WHERE n.entryId =:noteId

这里是响应类,必须持有注释和标签列表:

data class NoteResponse(
    @Embedded
    var note: Note? = null,
    @Relation(parentColumn = "entryId", entityColumn = "tagId", entity = Tag::class)
    var tags: List<Tag>? = null
)

但是tags列表在响应时是空的只是注意就在那里,我知道db和Join表中存在的Tags和Note有正确的外键,因为所有其他查询都有效,所以我的猜测是Query错了或NoteResponse类错误,因为我使用了我不需要的注释@Relation,但如果我不在标记上添加@Relation注释,则会抛出错误#39;知道这个列表是什么,怎么做?我找不到任何引用,文档只提到在POJO中嵌入一个类但没有列表的例子,所有类似的帖子只讨论插入列表。

1 个答案:

答案 0 :(得分:0)

请参阅我对多对多关系CinemaActorJoinDao

的认识

您可以代替我的代码,替换为您的代码,如果您有任何疑问,我会尝试向您询问:)