Существует сценарий, когда ТипЗапрос = «HR» (который приходит из запроса HTTP PUT), он должен вернуть всю информацию студентов, но вернуть титул «СОТРУДНИК»Возможно ли вернуть значение пользовательского столбца из таблицы базы данных sql с помощью slick?
Для примера рассмотрит «студент» таблицы с именем столбцами, идентификатор и название
+-------+----+--------------------+
+ name | id | title +
+-------+----+--------------------+
| KING | 10 | SOFTWARE ENGINEER |
| BLAKE | 30 | SYSTEMS ENGINEER |
+-------+----+--------------------+
ЦЕЛЬ: возвращение всех студентов, и переопределить название = "Employee"
Вот то, что я до сих пор
case class Student(name: String, id: Long, title: String)
class StudentTable(tag: Tag) extends Table[Student](tag, "student") {
def name = column[String]("name")
def id = column[Long]("id")
def title = column[String]("title")
override def * = (name, id, title) <> ((Student.tupled, Student.unapply)
}
lazy val studentsQuery = TableQuery[StudentTable]
Когда я пытаюсь отобразить и изменить значение заголовка в запросе, он жалуется на «повторное присвоение -val»
val f = studentsQuery.map(p => p.title = "EMPLOYEE).result
complier error: Reassignment to val
Подход 2: Я попытался пройти в requestType как параметр функции для StudentTable, так что я могу изменить значение заголовка на основе requestType. Но тогда не удалось определить studentsQuery, так как он жаловался на «требуемый тег».
class StudentTable(tag: Tag)(reqType: String) extends Table[Student](tag, "student") {
def name = column[String]("name")
def id = column[Long]("id")
def title = req.type match {
case "HR" => "EMPLOYEE"
case _ => column[String]("title")
}
override def * = (name, id, title) <> ((Student.tupled, Student.unapply)
}
// Didn't understand how to provide tag
lazy val studentsQuery = TableQuery[StudentTable]()("HR")
compilation error: unspecified value parameters: Cons: (Tag) => StudentTable
Здравствуйте Pawel Не может получить код для выполнения компилятора жалуется на 2 вещи: 1. Не удается разрешить эталонную копию с такой подписью 2. Не удается разрешить название символа –
Какую версии Slick вы используете? Вы предоставили противоречивые теги ('slick-2.0' и' slick-3.0'), поэтому неясно, какой из них у вас есть. –
Im, используя slick2.0 –