小编Mal*_*ero的帖子

在Scala-Slick中键入外键的投影

我正在使用Scala,而且是Play和Slick的新手.我开始阻止一个简单的数据库结构,我不确定处理外键和投影的正确方法.在页面底部的示例中,它目前无法编译,因为无法直接提取ForeignKey,因此将查询结果提升到我的类型(这基本上是sans方法和其他构造函数)的正确方法是什么:

case class UserCompanyPermission(pk: UUID, company: Company, user: User, accessLevel: CompanyPermissionLevel)
Run Code Online (Sandbox Code Playgroud)

我要么让类型投影返回一个UserCompanyPermission,否则有办法包装进出DAO方法的所有东西,所以从外面我只是传递我的Scala类型.基本上我想确保我的业务逻辑完全与状态分离,以便更容易测试,因此能够将所有表格细节限制在此存储包中.是他们的包装方式,还是我在DAO对象中编写的每个方法都需要自己进行转换?

trait CompaniesComponent { this: UsersComponent =>
  val Companies: Companies
  val UserCompanyPermissions: UserCompanyPermissions

  implicit val companyPermissionLevelTypeMapper = MappedTypeMapper.base[CompanyPermissionLevel.Value, Int](
    { level => level.id }, { id => CompanyPermissionLevel(id) }
  )

  class Companies extends Table[Company]("Company") {
    def pk = column[UUID]("pk", O.PrimaryKey)
    def subdomain = column[String]("subdomain", O.NotNull)
    def name = column[String]("name", O.NotNull)

    def * = pk ~ subdomain ~ name <> (Company.apply _, Company.unapply _)
  }


  class UserCompanyPermissions extends Table[UserCompanyPermission]("UserCompanyPermission") { …
Run Code Online (Sandbox Code Playgroud)

database scala slick

7
推荐指数
1
解决办法
2431
查看次数

标签 统计

database ×1

scala ×1

slick ×1