2013-05-26 2 views
42

Как вы обновляете несколько столбцов, используя Slick Lifted Embedding? This document не говорит много.Как обновить несколько столбцов с помощью Slick Lifted Embedding?

Я ожидал, что это будет что-то вроде этого

Query(AbilitiesTable).filter((ab: AbilitiesTable.type) => ab.id === ability_id).map((ab: AbilitiesTable.type) => (ab.verb, ab.subject)).update("edit", "doc") 

ответ

66

Я понял это. Это должно быть так

val map = Query(AbilitiesTable) 
    .filter(_.id === ability_id) 
    .map(ab => ab.verb ~ ab.context) 

map.update(("", "")) 

Typesafe, почему ваша документация так плоха? Я должен использовать Google почти всю глупую вещь или копаться в блок-тестах в течение нескольких часов. Пожалуйста, улучшите его. Благодарю.

+10

Примечание это работает только с обновляемыми ResultSets, которые требуют, чтобы включить идентификатор. Если вы попытаетесь использовать это без включения поля идентификатора в построенный запрос, он не сработает. – BeepDog

+0

Извините ... но что такое 'AbilitiesTable'? Это объект 'TableQuery'? Класс вроде этого: 'class CompanyTable (tag: Tag) расширяет таблицу [Company]'? –

58

С Slick 2.x и 3.x, этот способ написания его работы:

Users.filter(_.id === filterId) 
    .map(x => (x.name, x.age)) 
    .update("john", 99) 
+3

В intellij запятой может не работать. u может альтернатива писать так (x.name ~ x.age) – Rajeev

+1

В Intellij версии 2016 запятая, кажется, работает нормально. – null

Смежные вопросы