【发布时间】:2015-09-16 01:20:10
【问题描述】:
我正在编写一个简单的类 BooleanChar,用于将布尔值包装在 Oracle 的 Char 中(因为 Oracle is stupid or, TL;DR Oracle SQL does not support booleans)。
所以,我有模型类(将使用BooleanChar)。我还有投影类或映射到 REST 的对象等,它们将使用Boolean。
示例(做作且简单但切中要害):
val first: String = "Fred"
val last: String = "Flintstone"
val active: BooleanChar = BooleanChar(true)
val m = UserModel(first, last, active)
... // stuff happens and now I want to project it over REST
val u = User(m.first, m.last, m.active)
现在,诀窍是,我希望 m.active(模型上的 BooleanChar 或投影上的 Boolean)的映射完全透明。因此,如果这两个类是可互换的,那么上面的工作就非常好,即使:
case class User(first: String, last: String, active: Boolean)
但这一切都取决于两种对象之间的神奇映射,例如a: BooleanChar = b: Boolean 在某种程度上。否则,我必须到处这样做,而且很丑:
val u = User(first, last, active.map(_.state)) // BooleanChar has a `Boolean` `state`
【问题讨论】: