我正在尝试使用Room库更改我的SQLite数据库。我对左连接查询有些困惑。
我已经在SQLite中实现了它,但不知道如何在Room中实现相同的功能?
这是我的表创建:
第一个表:通知(Notification)
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 表中,但它的名称和描述将使用特定语言存储在 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?
编辑
我的应用是多语言应用程序,我会以特定语言(如印地语或古吉拉特语)获取通知标题。我将通知详细信息存储在notification表中,而标题存储在notification_trans中。
NotificationTrans具有id、英语、印地语和古吉拉特语列。
当用户要求古吉拉特语时,我从notificationTrans的gujarati列中检索通知标题。
我能够在sqlite中实现这一点。
但现在我想使用Room。