Тип преобразователя для списка объектов в комнате дБ - PullRequest
0 голосов
/ 20 июня 2019

Я хочу вставить в базу данных своей комнаты список сотрудников для каждой задачи.Я получаю эту ошибку:

Не могу понять, как сохранить это поле в базе данных.Вы можете рассмотреть возможность добавления конвертера типов для него.private final java.util.List assignees = null;

Как мне создать конвертер типов для Списка ??

 @Entity(tableName = "Task",
     foreignKeys = [(
            ForeignKey(entity = IssueType::class,
                    onDelete = ForeignKey.CASCADE,
                    parentColumns = ["id"],
                    childColumns = ["typeId"]
            )),
        (ForeignKey(entity = Location::class,
                onDelete = ForeignKey.CASCADE,
                parentColumns = ["id"],
                childColumns = ["locationId"]))
    ])
 data class Task(
    @PrimaryKey(autoGenerate = true)
    val id: Int,
    val typeId: Id,
    val locationId: Id,
    val priority: Priority,
    val deadline: Date,
    val assignees: List<Employee>,
    val description: String,
    val taskState: TaskState
 )

1 Ответ

0 голосов
/ 20 июня 2019
@Entity(tableName = "EmployeeTask",
            primaryKeys = arrayOf("employeeId", "taskId"),
            foreignKeys = arrayOf(
                    ForeignKey(entity = Employee::class,
                            parentColumns = arrayOf("id"),
                            childColumns = arrayOf("employeeId")),
                    ForeignKey(entity = Task::class,
                            parentColumns = arrayOf("id"),
                            childColumns = arrayOf("taskId"))
            )
    )
    data class EmployeeIssue(val employeeId: Id,
                             val taskId: Id)



     @Dao
        interface EmployeeWithTaskDao {
            @Insert
            fun insert(employedTask: EmployeeTask)

            @Query("""
                   SELECT * FROM Task
                   INNER JOIN EmployeeTask
                   ON Task.id=EmployeeTask.taskId
                   WHERE EmployeeTask.employeeId=:employeeId
                   """)
            fun getTasksForEmployees(employeeId: Int): Array<Task>

            @Query("""
                   SELECT * FROM employee
                   INNER JOIN EmployeeTask
                   ON EMPLOYEE.id=EmployeeTask.employeeId
                   WHERE EmployeeTask.taskId=:taskId
                   """)
            fun getEmployeesForTask(taskId: Int): Array<Employee>
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...