0
這放氣和地圖位映射數據庫列階對象是延續到下面的帖子:有沒有辦法通過光滑
How to combine multiple columns in one case class field when using lifted embedding?
我是位字段的忠實球迷,希望在我使用slick-macros的項目中使用這個邏輯。不幸的是,slick-additions沒有完全更新到slick 2.0,有一個不穩定的分支,實際上甚至不會編譯。我想直接測試上面的邏輯,但最終與以下錯誤:
按照上面的帖子:
trait Bitmasked {
type Value
def bitFor: Value => Int
def forBit: Int => Value
def values: Iterable[Value]
def longToSet: Long => Set[Value] =
bm => values.toSeq.filter(v => 0 != (bm & (1 << bitFor(v)))).toSet
def setToLong: Set[Value] => Long =
_.foldLeft(0L){ (bm, v) => bm + (1L << bitFor(v)) }
implicit lazy val enumTypeMapper: BaseTypeMapper[Value] =
MappedTypeMapper.base[Value, Int](bitFor, forBit)
implicit lazy val enumSetTypeMapper: BaseTypeMapper[Set[Value]] =
MappedTypeMapper.base[Set[Value], Long](setToLong, longToSet)
implicit lazy val getResult: GetResult[Value] =
GetResult(r => forBit(r.nextInt))
implicit lazy val getSetResult: GetResult[Set[Value]] =
GetResult(r => longToSet(r.nextLong))
}
/** Mix this class into a subclass of Enumeration to have it usable as a
* column type in a Slick Table. */
trait BitmaskedEnumeration extends Bitmasked { this: Enumeration =>
def bitFor = _.id
def forBit = apply(_)
}
object Role extends Enumeration with BitmaskedEnumeration {
type Role = Value
val Editor, Moderator, Administrator, Usermoderator, Usermoderator2, Partner, PremiumPartner, CorporatePaid = Value
}
。
[error] C:\git\slick-macros\database\src\main\scala\model\Database.scala:9: object BaseTypeMapper is not a member of package scala.slick.lifted
[error] import slick.lifted.{BaseTypeMapper, MappedTypeMapper}
[error] ^
[error] C:\git\slick-macros\database\src\main\scala\model\Database.scala:56: not found: value Role
[error] import Role._
[error] ^
[error] C:\git\slick-macros\database\src\main\scala\model\Database.scala:61: not found: type Role
[error] case class Member(login: String, rights: UserRights, roles: Role, addr: Address, company: Company, manager: Option[Member]) {
[error] ^
[error] three errors found
[error] (database/compile:compile) Compilation failed
[error] Total time: 17 s, completed Mar 18, 2014 1:18:30 PM
有沒有一種方法來位圖數據庫列放氣和映射?例如,當值是1(二進制0001)時,用戶是編輯器,當值是2(二進制0010)時,主持人和當值是3(二進制0011)時都是編輯器和主持人。我想要一種方法來解決這個問題並在Scala中設置標誌。
謝謝你, 沙市