2013-05-26 33 views
42

Làm cách nào để cập nhật nhiều cột bằng cách sử dụng tính năng Nhúng Nâng cao This document không nói nhiều.Làm cách nào để bạn cập nhật nhiều cột bằng cách sử dụng tính năng Nhúng Nâng cao?

tôi mong đợi nó để được một cái gì đó như thế này

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

Trả lời

66

I figured it out. Cần phải như thế này

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

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

Typesafe, tại sao tài liệu của bạn quá tệ? Tôi phải đối xử với Google khá nhiều điều ngớ ngẩn hoặc đào qua các bài kiểm tra đơn vị trong nhiều giờ. Hãy cải thiện nó. Cảm ơn.

+10

Chú giải này chỉ làm việc với resultsets updateable, đòi hỏi rằng bạn bao gồm ID. Nếu bạn cố gắng sử dụng điều này mà không bao gồm trường ID trong truy vấn được xây dựng, nó sẽ thất bại. – BeepDog

+0

Xin lỗi ... nhưng 'AbilitiesTable' là gì? Đây có phải là đối tượng 'TableQuery' không? Lớp như thế này: 'class CompanyTable (tag: Tag) mở rộng Table [Company]'? –

58

Với 2.x và 3.x Slick, cách này viết nó hoạt động:

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

Trong dấu phẩy intellij có thể không hoạt động. u có thể thay thế viết như thế này (x.name ~ x.age) – Rajeev

+1

Trong phiên bản Intellij 2016, dấu phẩy có vẻ hoạt động tốt. – null

Các vấn đề liên quan