как сделать запрос для списка в slick2?

Моя таблица:

case class Subject(id: Int, name:String, describe: String, sub_resource:String, addId:Long, recommand:Int, commentsum :Int, commentnumber: Int, userId: Int)
class Subjects(tag: Tag) extends Table[Subject](tag, "Subject") {
  def id=column[Int]("ID", O.PrimaryKey)
  def name=column[String]("Name")
  def describe=column[String]("describe")
  def sub_resource=column[String]("Resource")
  def keywords=column[String]("Keyword")
  def addID=column[Long]("Address")
  def recommandrate=column[Int]("Recommand")
  def commentsum=column[Int]("Sum_of_rate")
  def commentnumber=column[Int]("Rate_number")
  def userId=column[Int]("owner")
  def uniqueName = index("idx_grp_name", name, unique = true)
  def * = (id, name,sub_resource,keywords, addID, recommandrate, commentsum, commentnumber,userId)<> (Subject.tupled, Subject.unapply)
  def sub_res=foreignKey("sub_res_FK", sub_resource, resource)(_.link)
  def sub_address=foreignKey("sub_add_FK", addID, address)(_.id)
  def sub_user=foreignKey("sub_user_FK", userId, user)(_.id)
}
val subject = TableQuery[Subjects]

Я хочу, чтобы имя списка содержало «США» и «Китай»:

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

Я хочу использовать subject.filter(....).....


person user504909    schedule 10.04.2014    source источник


Ответы (1)


вам нужен как фильтр (для фильтрации по США и Китаю), так и карта для преобразования в имя, идентификатор пользователя и описание, что-то вроде (непроверено)

subject.filter(i => i.name === "USA" || i.name === "China")
       .map(i => (i._2, i._10, i._3) 

так как результатом является список кортежей, которые вы должны получить доступ к полям с помощью ._[index] штучки

[обновление] Я вижу, что не все ваши поля находятся в вашем def * = ... так что это тоже стоит посмотреть

Отредактировано cvogt: я исправил синтаксис. Это похоже на использование коллекций Scala, за исключением ===.

person Gertjan Assies    schedule 10.04.2014