首先是错误版本的相关代码内容:
Event.kt
:
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "events")
data class Event(
val title: String,
val description: String,
val timestamp: Long,
@PrimaryKey(autoGenerate = true)
val eventId: Long = 0L
)
EventDao.kt
:
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
@Dao
interface EventDao {
@Insert
suspend fun insertEvent(event: Event): Long
@Query("SELECT * FROM events WHERE eventId = :id")
suspend fun getEventById(id: Long): Event
@Delete
suspend fun deleteEvent(event: Event)
@Insert
suspend fun insertAttendees(attendees: List<Attendee>)
}
Attendee.kt
:
import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.PrimaryKey
@Entity(
tableName = "attendees",
foreignKeys = [
ForeignKey(
entity = Event::class,
parentColumns = ["eventId"],
childColumns = ["eventId"],
onDelete = ForeignKey.CASCADE
)
]
)
data class Attendee(
val eventId: Long,
val name: String,
val profilePictureUrl: String?,
@PrimaryKey(autoGenerate = true)
val attendeeId: Long = 0L
)
AttendeeDao.kt
:
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import com.plcoding.roomtransactions.Attendee
@Dao
interface AttendeeDao