Android 将嵌入实体的行连接到房间Dao中的POJO

Android 将嵌入实体的行连接到房间Dao中的POJO,android,android-sqlite,inner-join,android-room,Android,Android Sqlite,Inner Join,Android Room,我正在使用Room持久性库v2.0.0查询POJO。我把所有这些实体都放在不同的表中,包括账簿条目、类别等等,。。。。 我正在尝试将BookEntryEntity与与与BookEntry的Category\u id匹配的类别组合 我试图通过以下方式加入它: @Dao interface BookEntryDao { @Transaction @Query("SELECT * FROM bookentries INNER JOIN categories ON bookentrie

我正在使用Room持久性库v2.0.0查询POJO。我把所有这些实体都放在不同的表中,包括账簿条目、类别等等,。。。。 我正在尝试将BookEntryEntity与与与BookEntry的Category\u id匹配的类别组合

我试图通过以下方式加入它:

@Dao
interface BookEntryDao {

    @Transaction
    @Query("SELECT * FROM bookentries INNER JOIN categories ON bookentries.cg_id = categories.id WHERE categories.id == bookentries.category_id ORDER BY bookentries.date DESC")
    fun getBookEntries(): LiveData<List<BookEntry>>
}
不幸的是,我得到了一个错误:

错误:查询有问题:[SQLITE_error]SQL错误或 缺少数据库没有这样的列:bookings.cg\u id

但如果删除内部联接,则会收到以下警告:

警告:at.guger.moneybook.data.model.BookEntry有一些字段 [cg\u id,cg\u name]查询未返回

如何正确加入查询?

尝试:

@Dao
interface BookEntryDao {

    @Transaction
    @Query("SELECT * FROM bookentries INNER JOIN categories ON bookentries.category_id = categories.id ORDER BY bookentries.date DESC")
    fun getBookEntries(): LiveData<List<BookEntry>>
}

这不是我要寻找的,我有一个具有正确category_id的BookEntryEntity,但我想从这个事务中的另一个表中加载类别信息,即名称。请看一下我编辑的帖子。这就是SQL语句的作用:/。类BookEntry不是实体,所以当使用@Embedded时,我会删除前缀值。哦,好的,谢谢,我的错。。。但现在还有另一个警告:查询返回了at.guger.moneybook.data.model.BookEntry不使用的某些列[name]。您可以在字段上使用@ColumnInfo注释来指定映射。at.guger.moneybook.data.model.BookEntry中有一些字段[cg\u id,cg\u name],这些字段不是查询返回的。你有办法解决这个问题吗?你可以。别名类别列,例如,从bookentries中选择bookentries.*,categories.id作为cg_id,[其他列…]将bookentries内部的类别连接到bookentries上。category_id=categories.id按bookentries排序。date DESC或2。从@Embedded中删除前缀='cg_389;'。
@Dao
interface BookEntryDao {

    @Transaction
    @Query("SELECT * FROM bookentries INNER JOIN categories ON bookentries.cg_id = categories.id WHERE categories.id == bookentries.category_id ORDER BY bookentries.date DESC")
    fun getBookEntries(): LiveData<List<BookEntry>>
}
@Dao
interface BookEntryDao {

    @Transaction
    @Query("SELECT * FROM bookentries INNER JOIN categories ON bookentries.category_id = categories.id ORDER BY bookentries.date DESC")
    fun getBookEntries(): LiveData<List<BookEntry>>
}