Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Android房间多对一关系_Kotlin_Foreign Keys_Android Room_Many To One - Fatal编程技术网

Kotlin Android房间多对一关系

Kotlin Android房间多对一关系,kotlin,foreign-keys,android-room,many-to-one,Kotlin,Foreign Keys,Android Room,Many To One,我找不到关于这种关系的任何东西(一切都是一对一、一对多或多对多)。就连那些看起来也有点太复杂了 我有一个任务表和一个图像表。为了节省空间,多个任务可以具有相同的映像(删除任务时不会删除映像)。我有一个任务实体 import android.graphics.Bitmap import androidx.room.* @Entity(tableName = "tasks") class Task( @PrimaryKey(autoGenerate = true)

我找不到关于这种关系的任何东西(一切都是一对一、一对多或多对多)。就连那些看起来也有点太复杂了

我有一个任务表和一个图像表。为了节省空间,多个任务可以具有相同的映像(删除任务时不会删除映像)。我有一个任务实体

import android.graphics.Bitmap
import androidx.room.*

@Entity(tableName = "tasks")
class Task(
    @PrimaryKey(autoGenerate = true)
    val id: Long,

    val imageId: Long = 0,

    // this needs a foreign key to Image
    val image: Image
)
另一个是图像

import androidx.room.ColumnInfo
import androidx.room.PrimaryKey

@Entity(tableName = "images")
class Image (
    @PrimaryKey(autoGenerate = true)
    val id: Long,

    val title: String,
    @ColumnInfo(typeAffinity = ColumnInfo.BLOB)
    val data: ByteArray? = null
)

如何为
imageId
列添加
foreignKey
,使其指向
图像
?我是否可以直接获取
图像
对象作为
任务
的成员,而不必创建另一个类?

这里必须使用一对多关系。有一个来自d.android.com的消息。如果您这样做,您将拥有一个任务实体、一个图像实体和一个数据类TaskWithImage,就像所提供的示例一样。

数据类TaskWithImage(
data class TaskWithImage(
    @Embedded val task: Task,
    @Embedded(prefix = "img_") val image: Image
)

@Query("""
    SELECT * FROM tasks
    INNER JOIN images as img_ ON tasks.id = img_.id
""")
fun getTasksWithImage(): List<TaskWithImage>
@嵌入式val任务:任务, @嵌入的(prefix=“img_”)val图像:图像 ) @查询(“”) 从任务中选择* 在tasks.id=img_uu.id上作为img_u的内部联接映像 """) 有趣的GetTaskWithImage():列表