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():列表