我正在尝试更改我的sqlite数据库与房间库。我有点困惑与左连接查询。android左连接与房间查询
我已经用sqlite实现了它,但不知道如何才能达到同样的房间?
这里是我创建表:
第一个表:通知
db.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_NAME ($COLUMN_ID INTEGER PRIMARY KEY, $ICON TEXT, $TITLE INTEGER," +
" $DATE INTEGER, $TYPE INTEGER,$URL TEXT, $MESSAGE INTEGER, FOREIGN KEY($TITLE) REFERENCES ${TableNotificationsTrans.getTableName(this)}(id)," +
"FOREIGN KEY($MESSAGE) REFERENCES ${TableNotificationsTrans.getTableName(this)}(id))")
第二张表:Notification_Trans
db.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_NAME ($COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, $COLUMN_EN TEXT, $COLUMN_GU TEXT, $COLUMN_HI TEXT)")
我在做什么是我保存通知中通知表,但其名称和说明将以特定语言存储在notification_trans中。
查询实现
DatabaseHelper.database!!.rawQuery("SELECT A.$COLUMN_ID, A.$ICON, N.${language.toLowerCase()} $TITLE, A.$DATE, A.$TYPE, A.$URL, M.${language.toLowerCase()} $MESSAGE FROM $TABLE_NAME A LEFT JOIN NotificationsTrans N ON A.$TITLE = N.id LEFT JOIN NotificationsTrans M ON A.$MESSAGE = M.id ORDER BY $DATE DESC LIMIT $pageNum*10, 10", null)
问题
How can I achieve same with room?
编辑
我的应用程序是多语言的应用程序,在这里我得到通知标题与特定的语言,l ike印地文或古吉拉特语。我在通知表中存储通知详细信息,同时标题notification_trans。
NotificationTrans有id,英文,印地文,古吉拉特语的专栏。
当用户询问古吉拉特语时,我正在从notificationTrans的列gujarati中重新获取通知标题。
我可以这样做,在sqlite中。
但现在我想它
房
如果您有静态查询,您可以在Room中使用它,就像您在SQLite中使用它一样。在你的情况下,你正在使用字符串插值来生成查询,在这种情况下Room不能帮你。 – CommonsWare