Как вы модифицируете существующие записи, используя ScalaQuery? - PullRequest
3 голосов
/ 28 ноября 2011

Под изменением я подразумеваю аналоги SQL UPDATE и DELETE.

В обоих случаях у меня есть объект-запись, и я хотел бы удалить ее в базе данных.Таблица всегда имеет первичный ключ, и он установлен в моей объектной записи.

Обратите внимание, что у меня нет запроса или другого источника, который "создал" эту объектную запись, все, что у меня есть, это истол.В общем, это выглядит так:

fetch the Record from Table
...
// forget how I get the Record
...
Record.person_name = "joe"
? update Record ?

Как это сделать?


Я определяю записи и таблицы следующим образом:
case class Topic(var id : Long,
                 var sectionId : Int,
                 ...

object TopicTable  extends Table[Topic]("Topic") {
       def id = column[Long]("top_Id", O.PrimaryKey) 
       def sectionId = column[Int]("sect_Id")
       ...

1 Ответ

4 голосов
/ 29 ноября 2011

Кажется, что нет прямых методов, поэтому вам нужно явно создать набор записей, чтобы изменить (для сравнения - я знаю, что SQ не ORM - в EF вы выбираете записи, изменяете их и на этом этапе ваши данныеконтекст «знает», что они были изменены, поэтому все, что вам нужно сделать, это отправить изменения).

Итак, сначала вы создаете RS так, как вам нравится:

val rs = for (rec <- MyTable if rec.id===10) yield rec;

и удаляете записи:

rs.mutate(rec => rec.delete())

для обновления:

rs.update(new MyRecord(...))

или (сплетни, это быстрее ;-))

rs.mutate(rec => rec.row = new MyRecord(...))

Обратите внимание, что я новичок сSQ, поэтому я могу просто дезинформировать вас.Я работаю на себя, хотя.

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

...