【发布时间】:2014-11-18 05:57:24
【问题描述】:
我正在尝试使用 Couchbase 作为使用 Slick 访问的关系数据库的缓存层。我的与问题相关的代码框架如下:
class RdbTable[T <: Table[_]](implicit val bucket: CouchbaseBucket) {
type ElementType = T#TableElementType
private val table = TableQuery[T].baseTableRow
private def cacheAll(implicit session: Session) =
TableQuery[T].list foreach (elem => cache(elem))
private def cache(elem: ElementType) =
table.primaryKeys foreach (pk => bucket.set[ElementType](key(pk, elem), elem))
private def key(pk: PrimaryKey, elem: ElementType) = ???
.......
}
如您所见,我想通过其所有主键来缓存每个元素。为此,我需要获取给定元素的该键的值。但是我没有看到一种明显的方法来计算主键的值(列值,如果是单列键;元组值,如果是多列)。
有什么建议吗?请注意,代码必须不知道实际的表及其列是什么。它必须是完全通用的。
【问题讨论】:
标签: scala caching primary-key couchbase slick