gpt4 book ai didi

scala - 对同一张 table 使用光滑的多重投影

转载 作者:行者123 更新时间:2023-12-05 00:24:04 25 4
gpt4 key购买 nike

我有一个用户表,我想对其进行多个投影。例如,我可以有类似的东西吗


class Users(tag: Tag) extends Table [User] (tag, "user") {
def * = (id.?, emailId, firstName, lastName, gender) <> (User.tupled, User.unapply)
def allDetails = (id.?, emailId, firstName, lastName, gender, createdTime, modifiedTime)
...
}
我在谷歌上搜索,但找不到任何东西。有人可以告诉我如何使用 allDetails 吗?

我愿意做

object Users {
val users = TableQuery[Users]
def getAllDetails = ??? // How can I use allDetails here
}

最佳答案

最近有同样的需求,并开始使用类似的东西:

abstract class AnyUserTable[T](tag: Tag) extends Table[T](tag, "user") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def emailId = column[String]("email_id")
def firstName = column[String]("firstname")
def lastName = column[String]("lastname")
def gender = column[String]("gender")
}

class Users(tag: Tag) extends AnyUserTable[User](tag) {
def * = (emailId, firstName, lastName, gender, id.?) <> (User.tupled, User.unapply)
}

class UserDetails(tag: Tag) extends AnyUserTable[UserDetail](tag) {
def createdTime = column[Option[Timestamp]]("created_time")
def modifiedTime = column[Option[Timestamp]]("modified_time")
def * = (emailId, firstName, lastName, gender, createdTime, modifiedTime, id.?) <> (UserDetail.tupled, UserDetail.unapply)
}

object Users {
val users = TableQuery[Users]
val getAllDetails = TableQuery[UserDetails] // That is how I propose to get all the details
}

从 Sky 的答案中借用案例类。
case class User(
emailId: String, firstName: String, lastName: String,
gender: String, id: Option[Int] = None)

case class UserDetail(
emailId: String,
firstName: String, lastName: String, gender: String,
createdTime: Option[Timestamp],
modifiedTime: Option[Timestamp], id: Option[Int] = None)

我想这与我在直接 sql 中使用可更新 View 所做的非常接近。

关于scala - 对同一张 table 使用光滑的多重投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com